【问题标题】:How to store a series of vectors from a for loop matlab [duplicate]如何存储来自for循环matlab的一系列向量[重复]
【发布时间】:2014-07-22 11:36:23
【问题描述】:

我有一个生成向量的 for 循环。我想将这些向量存储在矩阵中。 通常我会这样做:

for r=1:100

   vec=[x:y]+r;

   mat(:,r)=vec

end

但这不起作用,因为我有类似的东西:

dr=10/20

for r=1:dr:20

    vec=[x;y]+r;

  ...

我现在如何将向量存储在矩阵中?因为我不能使用 r 作为列索引,因为大多数时候 r 的值不是整数。

【问题讨论】:

  • 预分配 rr=1:dr:20;。然后使用for f=1:lenght(r)。这应该可以解决问题。

标签: matlab for-loop vector matrix integer


【解决方案1】:

许多选项,例如:

r=1:dr:20
for rr=1:length(r)

    vec=[x;y]+r(rr);
    mat(:,rr)=vec;
...

col = 1;
for r=1:dr:20

    vec=[x;y]+r;
    mat(:,col)=vec;
    col = col + 1;
    ....

但无论您选择什么,都必须在 for 循环之前预先分配 mat,如下所示:

mat = zeros(length(x) + length(y), length(1:dr:20))

在 Matlab 中使用循环时,预分配是必不可少的,否则它们将非常低效地运行。

【讨论】:

  • 非常感谢。 col=col+1 确实有效。我知道这很容易..
  • @Fl.pf。没问题,虽然我认为第一个更整洁 imo
  • 是的,但是那个人出了问题。计算比我写的例子更复杂:)也许我让它运行,我会尝试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 2019-04-18
  • 2012-09-12
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
相关资源
最近更新 更多