2015-02-09 72 views
0

我想将一些Matlab代码翻译成Python。不幸的是我没有Matlab,所以我不能尝试语法。if语句语法Matlab

我感到困惑下面

for i = 1:200 
    if mod(i,10) == 0 
     i 
    end 

的if语句for循环进行计算一些依赖于I值。 if语句做什么?

可我还问什么用零做了一个稀疏矩阵和之间的差异,例如

A = sparse(n,m) 
B = zeros(n,m) 

谢谢!

+0

对于未来的参考,如果你不能得到一个MATLAB许可证,或对于一个快速入侵,你可能想尝试八度,一个免费的克隆。 – 2015-02-09 17:09:06

回答

1

它通常是最好创建单独的问题,但我会尽量同时满足:

1)mod功能performes模操作,即分裂后的余数。 mod(i,10) == 0将是1,如果一个数字可以被10整除,否则为0。因此if语句将在数字i为10的倍数时执行。

由于没有else部分,如果条件不成立,则不会发生任何事情。

通过只写i(不带分号),当前值i被打印到命令窗口。您的示例代码的输出因此将为10,20,...,200

2)zeros命令创建了一个尺寸为n x m(当然)为零的“正常”矩阵。 MATLAB还有一个特殊的sparse memory organization。由于稀疏矩阵大部分由零组成,因此不需要用所有零填充内存,但可以将非零值保存到它们的位置。这是使用sparse函数自动完成的。要将稀疏矩阵转换为“正常”格式,可以使用full函数。

1

if语句检查i除以10的modulus(除法后的余数)是否为0。

当它被评估为真时,它会将数字i打印到命令窗口中。

+0

谢谢,这是否意味着for循环的其余部分只在我可以被10整除时运行?我不明白的实际部分是我在if语句中做了什么,以及当if语句不正确时会发生什么 – 2015-02-09 15:29:52

+0

如果if语句不成立,则不会发生任何情况。如果if语句为true,则在执行'for'循环中的下一个数字之前,执行'if'语句下面的行。 – HavelTheGreat 2015-02-09 15:31:09

+0

但是在这种情况下,所有if语句执行的都是'i',它已经从for循环计数器中定义。我不明白if语句有什么不同,无论是真是假。这是我想要了解的其他代码。 – 2015-02-09 15:33:36

0

请参阅documentation for modmod(i,10)返回i除以10后的余数,其中i为分红,10为除数。 if语句检查该余数是否等于0

1

天真的Python翻译将是

for i in range(1, 201): 
    if not i % 10: 
     print(i) 

,但我们可以通过指定一个步长值保存一些工作,

for i in range(10, 201, 10): 
    print(i)