Matlab簡單教程:循環

循環輸出變量

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章