【问题标题】:MATLAB vector operation. How to get previous element in vector to compute next element?MATLAB 向量运算。如何获取向量中的前一个元素来计算下一个元素?
【发布时间】:2021-07-01 22:49:58
【问题描述】:

我有一个向量 A,比如说

A = [1, 0, 0, 0]

我想对该向量执行操作以获取下一个元素。例如,说

A(i) = A(i - 1) * 5  [for i >= 2]

这可以通过循环轻松实现。但我想通过使用矢量运算来实现它。到目前为止我已经尝试过

A = [1, 0, 0, 0]
A(2:4) = A(1:3) * 5

但是这个操作后A中的内容是这样的

A = [1 5 0 0]

目标答案应该是

A = [1 5 25 125]

请提及为实现目标而进行的必要更改。

[注意:请不要把上面的例子简单地认为是5的幂的元素,而是考虑A(i) = A(i - 1) * 5。]

【问题讨论】:

  • 这个操作本质上依赖依次评估每个值。循环不一定很慢或很糟糕,你为什么要避免一个顺序操作,它很适合循环?
  • 因为向量操作是单行的,并且比循环需要更少的代码。只是想知道有没有办法这样做。这也将增加我的知识。 [我不是循环... :)]

标签: matlab vector vectorization


【解决方案1】:

怎么样:

A(1)*5.^[0:numel(A)-1]

【讨论】:

  • Ok.. 它可能会产生等效的结果。但是访问前一个元素以获取下一个元素的目标已被忽略。就像我说 A(1) = cos(0) 和 A(i) = cos(A(i - 1)) ..那么这是不可能的。
  • 不确定我是否理解你的例子,所以A(2)=cos(A1)=cos(cos(0)) ?
猜你喜欢
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 2011-08-28
  • 2019-04-19
  • 2018-05-03
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多