2011-12-12 32 views
8

遞增我有一個for循環用C語言編寫一個for循環的:轉換爲25從C到MATLAB

for (int i = 0; i < 1000; i+=25) 

我怎樣才能將其轉換爲MATLAB?

回答

6

for

for (int i = 0; i <= 1000; i+=25) 

可以以這種方式被轉換爲MATLAB for循環:

>> for i = [0:25:1000] 
    # Code 
    end 
+2

我認爲你的意思是'爲我',而不僅僅是'我'。而且你不需要圍繞冒號表達式的'[]'。 –

+3

-1這個**沒有給出正確的答案:'for(int i = 0; i <1000; i + = 25)'產生數字'0 25 50 ... 950 975',其中'i = 0:25:1000「產生」0 25 50 ... 950 975 1000「。如果'i <1000;'被替換爲'i <= 1000;'或者'i = 0:25:975'被使用,那麼輸出將匹配。 – Chris

+4

另請注意,'i = [0:25:1000]'實際上意味着不同於'i = 0:25:1000'的東西 - 在第一種情況下,實際上是預先分配內存來存儲矢量'0:25:1000 '。這個循環可能無關緊要,但與'i = 1:inf'和'i = [1:inf]'相比較。 –

2

如果要通過陣列使用的 'i' 作爲索引進行掃描, for i=0:25:1000將不起作用。第一元件的MATLAB中的陣列的索引是1。所以使用for i=1:25:1000

10

的MATLAB for loop syntax

for i = values 
    program statements 
     : 
end 

其中values

  • start:end
  • start:step:end之一,或
  • 值的數組。

表格start:end假設步驟爲1,而您希望步驟(或增量)爲25,因此請使用第二種形式。從你的問題中,for(int i = 0; i < 1000; i+=25)生成一個數字列表0 25 50 ... 950 975,即它不包括1000(請注意循環中的i < 1000;),所以我們不能在出現MATLAB語法時使用end=1000。改用end = 1000-25 = 975

for i = 0:25:975 
    program statements 
     : 
end 

將產生的i相同的值爲C當量。

注意:請參閱我對Mithun Sasidharan的回答的評論。他的答案爲C和MATLAB for循環產生了不同的數字(並且他似乎從他的MATLAB答案中刪除了for)。他的回答給出了C代碼的0 25 50 ... 950 975和他的MATLAB代碼的0 25 50 ... 950 975 1000

編輯:Aashish Thite的回答提出了一個關於循環和數組索引的重要觀點,它在C和MATLAB之間有所不同。