【问题标题】:MATLAB: Error in for loop for indexMATLAB:for 循环中的索引错误
【发布时间】:2013-02-08 14:57:42
【问题描述】:

我想分离以下单位矩阵的列

I =
 1     0     0
 0     1     0
 0     0     1

使用 for 循环,然后将其标记为索引向量。 然后我用了

n=3;
I = eye(n);
for i = drange(1:n)
    e(i) = zeros(n,1)
end

为最后一步生成列向量:

for i = drange(1:n)
    e(i)= I(:,i)
end

但是我的索引有错误。有人知道怎么搭吗?

或者一般来说,我如何将矩阵的列分隔以分隔具有必须使用该向量的某些索引的向量?

【问题讨论】:

  • 我无法理解这个问题。你想做什么?请给出一个你想要的结果矩阵e 的例子。目前,您正在尝试将向量分配给产生错误的单个元素。

标签: matlab loops for-loop indexing


【解决方案1】:

为什么不直接生成

n=3;

e=eye(n,n);

顺便说一句,您可以使用以下方法纠正循环:

for i=1:n
   e(:,i)=I(:,i); 

end    

不过,没必要!

【讨论】:

  • 谢谢。但我的问题不是创建单位矩阵,而是将其分离为由 I 的每一列中 1 的位置索引的向量。
  • 我不明白!你想做类似 v=I(:,1) 的事情,得到 I 的第一列吗?
  • 是的,我的意思是列不是第一个,而是所有列,并且在带有索引的循环内。因为我将有超过 10000 列,稍后会在代码中调用其中的一些。
  • 您可以随时访问 I 的任何列...您无需将其分隔为不同的向量。你只需要像上面答案的第二部分那样改变索引......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
  • 2017-06-24
  • 2017-08-13
  • 1970-01-01
相关资源
最近更新 更多