2015-02-09 224 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)