将增量为 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 < 1000; i+=25)
生成了一个数字列表0 25 50 ... 950 975
,即它不包括1000
(注意for
循环中的i < 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 < 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
被使用,那么输出将匹配。
另请注意,i=[0:25:1000]
实际上与i=0:25:1000
的含义不同——在第一种情况下,您实际上是在预分配内存来存储向量0:25:1000
。这对于这个循环可能无关紧要,但与 i=1:inf
和 i=[1:inf]
相比。【参考方案3】:
如果您打算使用 'i' 作为索引来扫描数组,for i=0:25:1000
将不起作用。 matlab数组中第一个元素的索引是1。所以使用for i=1:25:1000
【讨论】:
以上是关于将增量为 25 的“for”循环从 C 转换为 MATLAB的主要内容,如果未能解决你的问题,请参考以下文章
c语言,用循环的方法将字符串“123”转化成数字123,应该怎样写?
将 Enumeration<Integer> for 循环从 Java 转换为 C#? C# 中的 Enumeration<Integer> 到底是啥? [复制]