2011-12-12 93 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之间有所不同。