1. 程式人生 > >Matlab基礎之矩陣迴圈

Matlab基礎之矩陣迴圈

純小白零基礎,非小白繞道,文件寫的比較亂,將就著看吧。

一、for迴圈

for迴圈和c++的for迴圈還是有區別的,用起來簡化很多。格式:for 。。。end

example1;

建立一個10階的希爾伯特矩陣

s = 10;
H = zeros(s);

for c = 1:s
    for r = 1:s
        H(r,c) = 1/(r+c-1);
    end
end
數字求和:
sum=0;
for i=1:1:100
sum=sum+i;
end
fprintf('sum =%d',sum);
矩陣運算:
a=[1 2 3;4 5 6;7 8 9];
for i=1:size(a,1)//矩陣a的行
    for j=1:size(a,2)//矩陣a的列
        if a(i,j)>5
            a(i,j)=sqrt(a(i,j));
        end
    end
end
for i=1:size(a,1)
    for j=1:size(a,2)
        if(j>2)
        fprintf('%f\n',a(i,j));
        else
             fprintf('%f\t\t',a(i,j));
        end
    end
end

result:

1.0000002.000000   3.000000
4.0000005.000000   2.449490
2.6457512.828427   3.000000

二、while迴圈

1.用while迴圈計算10的階乘:

n = 10;
f = n;
while n > 1//判斷條件不帶括號也行啊
    n = n-1;
    f = f*n;
end
disp(['n! = ' num2str(f)])
2.計算輸入數(正數)的平均數:
%變數如下:
%x
%sum_x,n,average
x=input('input one number please !\n');
sum_x=0;
n=0;
while(x>0)
n=n+1;
sum_x=sum_x+x;
x=input('input one number please !\n');
if (x<0)
    break;
end;
end;
if(n==0)
fprintf('input a positive number please !\n');
else
fprintf('Only input a number so only the average !\n')
average=sum_x/n;
fprintf('average is :%f\n',average);
end

三、邏輯陣列

就是給一個數組進行邏輯運算,它和陣列用迴圈的方式計算效果一樣,但效率比較高。

1.比如一個數組a=[1 2 3;4 5 6;7 8 9],對它執行命令c=a>3時,此時邏輯矩陣c=[0 0 0;1 1 1;1 1 1]; 再執行a(c)時,就是取a矩陣裡對應邏輯矩陣c為真時的值:4 5 6 7 8 9;

若執行a(c)=sqrt(a(c))時,

a =
    1.0000    2.0000    3.0000
    2.0000    2.2361    2.4495
    2.6458    2.8284    3.0000

我們可以把for迴圈裡第三個程式碼用邏輯陣列(矩陣)來實現:

a=[1 2 3;4 5 6;7 8 9];
c=a>5;
a(c)=sqrt(a(c));
i=0;
j=0;
for i=1:3
for j=1:3
    if j>2
fprintf('%f\n',a(i,j));
    else
        fprintf('%f\t',a(i,j));
    end
end;
end;

那麼兩種方法那種效率更好呢?下面就來對比看看

for Loop:

a=1:10000;
b=reshape(a,100,100);%Devide a into 100*100
tstart=tic;%Time is strat
for i=1:100
for j=1:100
if b(i,j)>3000
b(i,j)=sqrt(b(i,j));
end
end
end
time_end=toc(tstart);%Time is over
fprintf('the use of time is :%f',time_end);
%%%%%
result:
the use of time is :0.003353>>;

logical:

a=1:10000;
b=reshape(a,100,100);
tstart=tic;%Time is strat
c=b>3000;
b(c)=sqrt(b(c));
time_end=toc(tstart);%Time is over
fprintf('the use of time is :%f',time_end);
%%%%%%
result:
the use of time is :0.002274>> 

邏輯運算 要快些。

四、選擇排序和氣泡排序

%1.選擇排序
a=[1 2 -1 3 2 6 8 8 2 3 2 10];
n=length(a);
for i=1:length(a)-1
for j=i+1:length(a)
if(a(i)>a(j))
t=a(i);
a(i)=a(j);
a(j)=t;
end
end
end
disp('排序後:')
a

%2.氣泡排序
a=[1 2 -1 3 2 6 8 8 2 3 2 10];
n=length(a); 
for i=1:n-1   
 for j=1:n-i        
  if a(j+1)<a(j)           
      temp=a(j);           
      a(j)=a(j+1);       
      a(j+1)=temp;      
  end   
 end 
end  
disp('')
a

%3.matlab自帶排序函式sort();
a=[1 2 -1 3 2 6 8 8 2 3 2 10];
b=sort(a,'descend');%升序排列
c=sort(a,'ascend');%降序排列
disp('')
b 
c
%result:
排序後:

a =

    -1     1     2     2     2     2     3     3     6     8     8    10

對於sort()函式想了解更多,參考matlab文件。

相關推薦

Matlab基礎矩陣迴圈

純小白零基礎,非小白繞道,文件寫的比較亂,將就著看吧。 一、for迴圈 for迴圈和c++的for迴圈還是有區別的,用起來簡化很多。格式:for 。。。end example1; 建立一個10階的希爾伯特矩陣: s = 10; H = zeros(s); for c

機器學習數學基礎矩陣理論(三)

gis 引入 定義 增加 2017年 理論值 nbsp 得到 正數 矩陣求導 目錄 一、 矩陣求導的基本概念 1. 一階導定義 2. 二階導數 二、 梯度下降 1. 方向導數. 1.1 定義 1.2 方向導數的計算公式. 1.3 梯度下降最快的方向 1.

器學習數學基礎矩陣理論(二)

pac 本質 uid spa album 空間 矩陣 amp .com 目錄 一、線性空間 1. 線性空間的概念 (1) 線性空間的定義 (2) 線性空間的本質 2. 線性空間的基 (1) 線性表示 (2) 線性相關 (3) 線性無關 (4) 線性空間基的定義 (5) 坐標

python基礎矩陣操作

 包括矩陣與行向量之間的操作,以及矩陣加法等。 a = np.random.randint(1,10,(3,4)) --------------------------------------------------------- a Out[102]: array([[9, 4,

java基礎for迴圈與while迴圈

2018年11月15日 17:11:12 塔城就是個弟弟 閱讀數:2 標籤: for迴圈 while迴圈

go語音基礎for迴圈

1、for 的用法 示例: package main //必須有一個main包 import "fmt" func main() { //for 初始化條件 ; 判斷條件 ; 條件變化 { //} //1+2+3 …… 100累加 sum := 0 /

Python基礎While迴圈

一、摘要 本片博文將介紹input()函式和while迴圈的使用 二、input()函式 函式input() 讓程式暫停執行,等待使用者輸入一些文字。獲取使用者輸入後,Python將其儲存在一個變數中,以方便你使用。 message = input("Tell me something, and

python基礎for迴圈

for迴圈 知識點 for 迴圈的語法: for 變數 in range(10): 迴圈需要執行的程式碼 else: 迴圈結束時需要執行的程式碼 break:跳出整個迴圈,不會再執行迴圈後續的內容 continue:跳出本次迴圈,contin

OpenGL數學基礎矩陣

三維空間物體的運動使用變換來表示,包括三種:平移變換(translate),旋轉變換(rolate),伸縮變換(scale),變換量可以使用4x4的矩陣(Matrix)表示,變換過程就是對物體的所有頂點都乘以這個矩陣。 矩陣乘法 ⎡⎣⎢1cea1fbd1

Matlab基礎座標軸操作彙總(新加網格線設定)

1、座標軸的視點(viewpoint):從哪個方向看整個座標系統,這決定了座標軸的方向和位置,通過view函式實現視點的設定;      view([z y ]):(將座標系統想象為一座房子,而自己是個會飛的天使,最初你在房子的北,海拔角度為0的位置,這是時你的視角是vi

Java基礎While迴圈

package pkg; import java.util.Scanner; /** * Created by sanmao on 2016/6/30. */ public class While { public static void mai

MATLAB基礎知識——1.4矩陣元素的引用

運算符 子矩陣 知識 str res 說明 向量 列存儲 font 矩陣元素的引用方式 (1)通過下標引用矩陣元素,下標必須為正整數,且用圓括號括起來。 (2)通過序號來引用,在MATLAB中矩陣元素按列存儲。序號與下標是一一對應的,以m*n的矩陣A為例,矩陣A(i,j)的

科學計算與MATLAB語言基礎知識

科學計算與MATLAB語言 MOOC 筆記 1、MATLAB基礎知識 MATLAB科學計算流程: MATLAB主要功能: MATLAB搜尋路徑 MATLAB數值資料: (1)數值資料型別 整型 浮點型 複數型

Python基礎(六) for 迴圈

全部測試程式碼、 #!/usr/bin/env python3 # _*_ conding:utf-8 _*_ #計算1+2+3 count=1+2+3 print('count--',count) #計算1+2+3+...+10; sum=0 for i in [1,2,

python基礎迴圈與迭代器

迴圈  python 迴圈語句有for迴圈和while迴圈。 while迴圈while迴圈語法 while 判斷條件: 語句 #while迴圈示例 i = 0 while i < 10: i += 1; print(i) while els

JAVA演算法習題集合—第一階段2:基礎演算法練習for迴圈的練習

  知識點:for迴圈、for迴圈和if語句的巢狀使用 8、輸出1到100 描述:輸出從1到100 執行結果: 1 2 3 4...100 for(int i=1;i<=100;i++){ Syste

Python3基礎(六)迴圈

在上一講中我們學習了 while 語句進行迴圈控制,接下來我們將要學習另一種迴圈語句 for 。 一、基本使用 不同程式語言都有 for 語言,比如 C# 語言中的 foreach, Java 語言中的 for,在 Python 中的基本使用方法如下。 for item in

python基礎運算、if語句、while迴圈

         python的運算主要有算術運算、賦值運算、交叉賦值運算、鏈式運算。解壓賦值。          算術運算包括簡單的加減乘除等,a+=1等同於a=a+1。     &n

Python基礎迴圈語句(02)

Python中的迴圈語句有 for 和 while。 Python迴圈語句的控制結構圖如下所示: 1.While迴圈 Python中while語句的一般形式: while 判斷條件: 語句 注: 需要注意冒號和縮排。在Python中沒有do..while迴圈

JAVA基礎迴圈選擇結構

1)順序結構:從上往下,依次執行 2)選擇結構:if語句1:if(關係表示式) {語句體;} if語句2:if(關係表示式) {語句體1;} else {語句體2;} if語句3:if(關係表示式1) {語句體1;} else if(關係表示式2) {語句