2013-10-16 58 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

相关问题