【问题标题】:Reassigning vector values using nested for-loops in matlab?使用matlab中的嵌套for循环重新分配向量值?
【发布时间】:2015-04-22 20:05:41
【问题描述】:

在 matlab 中,我有两个向量,ind 和 ind3。 ind = [1 2 3 4 5] 我想根据 ind 定义 ind3,这样我希望 ind(3)、ind(4) 和 ind(5) 成为 ind3(1) 和 ind3(2) 和 ind3( 3)。所以 ind3 = [ind(3) ind(4) ind(5)] 但由于某种原因我不能这样做。我认为使用嵌套的 for 循环会很简单,但它并没有真正起作用。

for i=3:5
  for n=1:3
    ind3(n,:) = ind(i,:);
  end 
end 

通过逻辑上的 for 循环,我知道为什么输出是错误的。但我不知道该怎么做?我是不是很愚蠢,错过了一些非常简单的东西?!

我知道这可能是一个简单的答案,但有人可以帮忙吗??

谢谢。

【问题讨论】:

  • ind3(1:3,:)=ind(3:5,:)
  • 所以请把问题说清楚一点,你想复制还是移动两列?
  • @bla 不,我误解了你的解决方案......现在是凌晨 1.30,我只是误读了你写的内容......对不起!删除了那条评论。

标签: arrays matlab for-loop vector assign


【解决方案1】:

如果你想要 ind3 = [ind(3) ind(4) ind(5)] 并且你想在一个循环中执行它,你只需要一个循环。此外,由于您正在处理向量,因此您只有一个索引变量。

for n=1:3
  ind3(n) = ind(n + 2);
end

【讨论】:

  • ...谢谢...我不知道为什么我没有想到。谢谢。
【解决方案2】:

也许我误解了你的问题,但这就是你想要的:

ind3=ind(3:5)

【讨论】:

    【解决方案3】:

    首先,您说您的数组是一维的(它们不是矩阵),并且在您的代码中通过调用ind3(n,:)ind(i,:) 将它们视为二维数组。

    只要这里的一切都是一维的,你只需要一个 for 循环:

    for i=3:5
        ind3(i)=ind(i-2);
    end
    

    解释:这里是i=3,4,5。对于i=3,您分配ind3[3]=ind[1],对于i=4ind3[4]=ind[2],对于i=5ind3[5]=ind[3]

    或者您可以直接拨打ind3=ind(3:5)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多