使用matlab在没有for循环的情况下操纵向量中的每个元素

时间:2013-10-16 03:35:27

标签: matlab vector vectorization

我正在尝试在matlab中编写一些代码来处理向量中的每个元素,并且还会返回一个向量。所以基本上如果我有一个向量x = [1 2 3 4 5]';我想执行2 * x(i)* i,其中i是向量中的第i个元素。并返回y = [2 8 18 32 50]';

现在我有了代码:

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

我是Matlab的新手,所以我一直在做研究,尝试学习语法,让我逐个元素乘法,但这一切都很困难。我无法超越那个1:numel(x)取代了我的位置。再一次,我是matlab的新手,所以对我帮助我学习的答案的任何解释都非常感谢。谢谢!

1 个答案:

答案 0 :(得分:2)

以下是如何操作:

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

原因如下:我们通常希望对向量或矩阵中的每个元素进行操作。 Matlab将允许您使用元素明智的操作执行此操作。例如,假设您希望将向量x中的每个条目与向量y中的相应条目相乘。换句话说,x(1)*y(1)x(2)*y(2)等。为了做到这一点,应该在乘法之前使用符号.。实际上,您可以在任何数学符号前放置一个.来告诉Matlab您希望在向量或矩阵的每个元素上进行操作。