所以我對MATLAB完全陌生,我試圖理解數學運算中的冒號表示法。所以,在這本書中,我發現了這樣的說法:瞭解MATLAB中的冒號表示法
w(1:5)=j(1:5) + k(1:5);
我不明白它到底做了什麼。我知道w(1:5)
幾乎遍歷索引1到5的w
數組,但在上面的語句中,最後不應該將所有索引w
等於j(5) + k(5)
?或者我完全錯誤的如何工作?如果有人在Java中發佈了相當於Java的版本,那將會非常棒。在此先感謝:-)
所以我對MATLAB完全陌生,我試圖理解數學運算中的冒號表示法。所以,在這本書中,我發現了這樣的說法:瞭解MATLAB中的冒號表示法
w(1:5)=j(1:5) + k(1:5);
我不明白它到底做了什麼。我知道w(1:5)
幾乎遍歷索引1到5的w
數組,但在上面的語句中,最後不應該將所有索引w
等於j(5) + k(5)
?或者我完全錯誤的如何工作?如果有人在Java中發佈了相當於Java的版本,那將會非常棒。在此先感謝:-)
我很肯定這意味着
「第5個W的元素應j的第一5個元素+ k的第一5個元素」(我不知道如果MATLAB陣列開始與0或1雖然)
所以:
w1 = j1+k1
w2 = j2+k2
w3 = j3+k3
w4 = j4+k4
w5 = j5+k5
認爲 「向量加法」 在這裏。
w(1:5)=j(1:5) + k(1:5);
是相同的是:
for i=1:5
w(i)=j(i)+k(i);
end
我想我喜歡讓事情變得複雜。我認爲它會類似於類似於: 對於n = 1:對於h = 1:5 對於s = 1:5 w(n)= j(h)+ k(s) ; 結束 結束 結束# 好像每次迭代一次發生一次。可能不會。謝謝。 – AxiomaticNexus
更確切地說,上面的代碼是這個循環的所謂向量化版本,它更高效。 – kol
MATLAB使用向量和矩陣,並被大量優化,有效地對他們的處理操作。
表達式w(1:5)
表示由w
的前5個元素組成的載體;您發佈的表達式會添加兩個5元素向量(j和k的前5個元素),並將結果分配給w的前五個元素。
我認爲你的問題來自你如何稱呼這個聲明的方式。這不是一個迭代,而是一個簡單的任務。現在我們只需要瞭解什麼是分配給什麼的。
我會假設j
,k
,w
都是載體1
由N
。
j(1:5)
- 意味着元素從1
到載體的5
j
j(1:5) + k(1:5)
- 將導致的elementwise和兩個操作數的
w(1:5) = ...
- 將分配結果再次的elementwise到w
編寫您使用冒號表示法的代碼使得它不那麼冗長和高效。所以強烈建議這樣做。另外,冒號表示法是MATLAB的基本和非常強大的功能。在你繼續之前,確保你瞭解得很好。 MATLAB有很好的文檔記錄,所以你可以閱讀這個主題here。
Matlab數組索引從1開始。 – Chris