将增量为 25 的“for”循环从 C 转换为 MATLAB

Posted

技术标签:

【中文标题】将增量为 25 的“for”循环从 C 转换为 MATLAB【英文标题】:Conversion of a 'for' loop with an increment of 25 from C to MATLAB 【发布时间】:2012-01-18 09:59:43 【问题描述】:

我有一个用 C 语言编写的 for 循环:

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

如何将其转换为 MATLAB?

【问题讨论】:

【参考方案1】:

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 &lt; 1000; i+=25) 生成了一个数字列表0 25 50 ... 950 975,即它不包括1000(注意for 循环中的i &lt; 1000;),所以我们不能使用end=1000 in out MATLAB 语法。而是使用end = 1000-25 = 975:

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

将产生与 C 等效项相同的 i 值。

注意:请参阅我对 Mithun Sasidharan 的回答的评论。他的答案为 C 和 MATLAB for 循环产生了不同的数字(他似乎已经从他的 MATLAB 答案中删除了for)。他的回答为 C 循环提供了0 25 50 ... 950 975,为他的 MATLAB 代码提供了0 25 50 ... 950 975 1000

编辑:Aashish Thite 的回答提出了一个关于 for 循环和数组索引的重要观点,这在 C 和 MATLAB 之间是不同的。

【讨论】:

【参考方案2】:

for 循环

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

可以通过这种方式转换为MATLAB for循环:

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

【讨论】:

我认为您的意思是for i,而不仅仅是i。而且您不需要在冒号表达式周围加上[] -1 这没有给出正确答案:for(int i = 0; i &lt; 1000; i+=25) 产生数字0 25 50 ... 950 975,而i = 0:25:1000 产生0 25 50 ... 950 975 1000。如果 i &lt; 1000; 被替换为 i &lt;= 1000; 或者如果 i = 0:25:975 被使用,那么输出将匹配。 另请注意,i=[0:25:1000] 实际上与i=0:25:1000 的含义不同——在第一种情况下,您实际上是在预分配内存来存储向量0:25:1000。这对于这个循环可能无关紧要,但与 i=1:infi=[1:inf] 相比。【参考方案3】:

如果您打算使用 'i' 作为索引来扫描数组,for i=0:25:1000 将不起作用。 matlab数组中第一个元素的索引是1。所以使用for i=1:25:1000

【讨论】:

以上是关于将增量为 25 的“for”循环从 C 转换为 MATLAB的主要内容,如果未能解决你的问题,请参考以下文章

如何将python for循环从顺序转换为并行运行

C增量指针与for()循环性能[关闭]

如何将ForEach转换为For循环

c语言,用循环的方法将字符串“123”转化成数字123,应该怎样写?

将 Enumeration<Integer> for 循环从 Java 转换为 C#? C# 中的 Enumeration<Integer> 到底是啥? [复制]

在java中如何用for循环把一个十进制数转换成二进制