天天看點

Matlab循環自變量問題

Matlab的循環與C/C++等普通計算機語言的循環還是有很大的差別的。

看下面Matlab代碼:

a=[1 2 3 4 5 6];
for i=1:6
    if i==3,
       i=i-1;
    end
     disp(a(i));
end
           

結果為:

1

2

3

4

5

6

将上述Matlab轉換成C++代碼:

#include <iostream>

using namespace std;

int main()
{
    int a[6]={1,2,3,4,5,6};
    for(int i=0;i<6;i++)
    {
        if(i==3)
            i--;
        cout<<a[i]<<endl;
    }
    return 0;
}
           

結果為始終列印3,陷入死循環。

分析:

Matlab循環是不支援修改循環變量的,修改循環變量無效,等于沒有修改。這是跟普通計算機語言最大的差別。另外,matlab的循環是包括頭尾的,而一般語言都是包括頭不包括尾,如python的循環,for i in range(5),是從0到4的,而不是從1到5。Matlab是從1開始的。

繼續閱讀