2011-12-04 51 views
0

所以我對MATLAB完全陌生,我試圖理解數學運算中的冒號表示法。所以,在這本書中,我發現了這樣的說法:瞭解MATLAB中的冒號表示法

w(1:5)=j(1:5) + k(1:5); 

我不明白它到底做了什麼。我知道w(1:5)幾乎遍歷索引1到5的w數組,但在上面的語句中,最後不應該將所有索引w等於j(5) + k(5)?或者我完全錯誤的如何工作?如果有人在Java中發佈了相當於Java的版本,那將會非常棒。在此先感謝:-)

回答

2

我很肯定這意味着

「第5個W的元素應j的第一5個元素+ k的第一5個元素」(我不知道如果MATLAB陣列開始與0或1雖然)

所以:

w1 = j1+k1 
w2 = j2+k2 
w3 = j3+k3 
w4 = j4+k4 
w5 = j5+k5 

認爲 「向量加法」 在這裏。

+0

Matlab數組索引從1開始。 – Chris

1
w(1:5)=j(1:5) + k(1:5); 

是相同的是:

for i=1:5 
    w(i)=j(i)+k(i); 
end 
+0

我想我喜歡讓事情變得複雜。我認爲它會類似於類似於: 對於n = 1:對於h = 1:5 對於s = 1:5 w(n)= j(h)+ k(s) ; 結束 結束 結束# 好像每次迭代一次發生一次。可能不會。謝謝。 – AxiomaticNexus

+0

更確切地說,上面的代碼是這個循環的所謂向量化版本,它更高效。 – kol

0

MATLAB使用向量和矩陣,並被大量優化,有效地對他們的處理操作。

表達式w(1:5)表示由w的前5個元素組成的載體;您發佈的表達式會添加兩個5元素向量(j和k的前5個元素),並將結果分配給w的前五個元素。

0

我認爲你的問題來自你如何稱呼這個聲明的方式。這不是一個迭代,而是一個簡單的任務。現在我們只需要瞭解什麼是分配給什麼的。

我會假設j,k,w都是載體1N

j(1:5) - 意味着元素從1到載體的5j
j(1:5) + k(1:5) - 將導致的elementwise和兩個操作數的
w(1:5) = ... - 將分配結果再次的elementwisew

編寫您使用冒號表示法的代碼使得它不那麼冗長和高效。所以強烈建議這樣做。另外,冒號表示法是MATLAB的基本和非常強大的功能。在你繼續之前,確保你瞭解得很好。 MATLAB有很好的文檔記錄,所以你可以閱讀這個主題here