2013-10-16 93 views
0

我想在matlab中編寫一些代碼來處理矢量中的每個元素,並且還會返回一個矢量。所以基本上如果我有一個向量x = [1 2 3 4 5]';我想執行2 * x(i)* i,其中i是向量中的第i個元素。並返回y = [2 8 18 32 50]';使用matlab來處理矢量中的每個元素,而沒有for循環

現在我的代碼:

N = length(x); 
for i=1:N 
    y(i,:) = (i*2).*x(i,:); 
end 

我新的Matlab的,所以我一直在做研究,以嘗試和學習,讓我通過元素相乘做元素和語法一切,但這很困難。我無法超越那個1:numel(x)取代我的i。再次我是matlab新手,所以任何解釋將幫助我學習的答案是非常感謝。謝謝!

+0

一個側面說明,最好[在Matlab中不要使用'i'作爲變量名](http://stackoverflow.com/questions/14790740/using-i-and-j-as-variables-in -matlab)。 – Shai

回答

2

這裏是如何做到這一點:

y = x.*(1:numel(x))*2 

這是爲什麼:我們經常要做手術的向量或矩陣中的每個元素。 Matlab將允許您使用元素明智的操作執行此操作。例如,假設您要將矢量x中的每個條目與矢量y中的相應條目相乘。換句話說,x(1)*y(1),x(2)*y(2)等。爲此,應在乘法之前使用符號.。事實上,你可以在任何數學符號前加上.來告訴Matlab你想要在矢量或矩陣的每個元素上進行操作。

+0

感謝您的解釋,幫助了很多。 – user2743

相關問題