【问题标题】:Using matlab to manipulate each element in a vector without a for loop使用 matlab 在没有 for 循环的情况下操作向量中的每个元素
【发布时间】:2013-10-24 01:23:21
【问题描述】:

我正在尝试在 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) 代替我的 i。再次,我是 matlab 的新手,因此非常感谢对有助于我学习的答案的任何解释。谢谢!

【问题讨论】:

标签: matlab vector vectorization


【解决方案1】:

这是怎么做的:

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

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

【讨论】:

  • 感谢您的解释,帮助很大。
猜你喜欢
  • 2021-05-13
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多