Matlab簡單教程:迴圈
阿新 • • 發佈:2019-01-03
迴圈輸出變數
for i=1:4
i
end
其中1:4
代表一個行向量1 2 3 4
,在matlab中,行向量的另外一個表示方法是[1 2 3 4]
,即for i=1:4
等價於for i=[1 2 3 4]
,編寫程式時牢記一個點:對於某次固定的迭代,i
會從這個向量中取一個值,該值可以參與迴圈中的計算。
執行輸出
i =
1
i =
2
i =
3
i =
4
修改迭代步長
例子:遍歷1~10之間的所有奇數
for i=1:2:10
i
end
其中1:2:10
表示迭代從1
開始,步長為2
,最大不超過10
,即代表行向量1 3 5 7 9
備註:步長可以為負值
遍歷行向量變數和列向量變數
X=rand(1,5);
for i=X
i
end
X=rand(5,1);
for i=X
i
end
其中rand(1,5)
生成一個1行5列的矩陣,即行向量;rand(5,1)
生成5列1行的矩陣,即列向量。生成的向量會存放在變數X中,然後使用for i=X
對向量進行遍歷。
如果X為矩陣,對矩陣進行遍歷
X=magic(3);
X
for i=X
i
end
執行輸出
X =
8 1 6
3 5 7
4 9 2
i =
8
3
4
i =
1
5
9
i =
6
7
2
其中magic(n)
代表魔法函式(任意一行或一列的和值相等)。從執行結果中可以看出,對矩陣的迴圈就是在每次迭代中,依次取出矩陣的每一列。
終止迴圈break
X=[2 8 4 3 9 1];
for i=X
if i==3
disp('3 found');
break;
end
end
查詢向量X
是否含有3
,如果有則終止迴圈。
跳過本次迴圈continue
X=[5 7 -1 3 -8 6];
sum=0;
for i=X
if i<0
continue;
end
sum=sum+i;
end
sum
計算向量X
中所有大於0的數的和。
雙重迴圈和多重迴圈
雙重迴圈程式碼
X=magic(3);
X
[row,col]=size(X);
for i=1:row
disp(['----- row: ', num2str(i),' -----']);
for j=1:col
disp(['col ',num2str(j),' :', num2str(X(i,j))]);
end
end
執行輸出
X =
8 1 6
3 5 7
4 9 2
----- row: 1 -----
col 1 :8
col 2 :1
col 3 :6
----- row: 2 -----
col 1 :3
col 2 :5
col 3 :7
----- row: 3 -----
col 1 :4
col 2 :9
col 3 :2
第一重迴圈遍歷每一行,對於其中一行,在第二重迴圈中對該行進行遍歷。在第二重迴圈中,一般使用X(i,j)
這樣的形式取出參與計算的值。這裡只是對該值做了輸出。
三重迴圈程式碼
toFind=[12,23,9,10];
X=magic(3);
[row,col]=size(X);
for find=toFind
disp(['---------- looking ',num2str(find)]);
found=0;
for i=1:row
for j=1:col
if X(i,j)==find
disp([num2str(find),' found at position (',num2str(i),',',num2str(j),')']);
found=1;
end
end
end
if found==0
disp([num2str(find), ' not found']);
end
end
運算輸出
---------- looking 12
12 not found
---------- looking 23
23 not found
---------- looking 9
9 found at position (3,2)
---------- looking 10
10 not found
查詢toFind
向量中每一個值,在X
矩陣中是否存在。
while迴圈
除了以上常用的for
迴圈以外,在matlab中還可以使用while
迴圈,參考doc while
。