我试图创建一个使用for循环来计算索引D集的程序。但是我有一个问题,因为索引的长度不一样。
示例:
z = [0 0 0 0 0 0 1]
v(1,:) = [1 0 0 0 1 0 1]
v(2,:) = [0 1 0 0 1 1 1]
v(3,:) = [0 0 1 0 1 1 0]
v(4,:) = [0 0 0 1 0 1 1]
v(1,:) = find(v(1,:)~=z);
v(2,:) = find(v(2,:)~=z);
v(3,:) = find(v(3,:)~=z);
v(4,:) = find(v(4,:)~=z);
we obtain :
D(1,:) = [1 5];
D(2,:) = [2 5 6];
D(3,:) = [3 5 6 7];
D(4,:) = [4 6];
代码:
for aa = 1:4
D(aa,:) = [find(v(aa,:)~=z)];
end
无效,因为length(D(1,:))~=length(D(2,:))~=length(D(3,:))
如何使用循环来确定索引D的集合?
感谢您的帮助!
答案 0 :(得分:1)
一种解决方案可以使用cell
,如下所示:
for aa = 1:4
D{aa} = [find(v(aa,:)~=z)];
end
答案 1 :(得分:0)
您可以使用矩阵D
,但事先将其初始化为:
D = ones(size(v)) + length(z)
然后填写:
for ii = 1:size(z,1)
D(ii,v(ii,:)~=z) = find(v(ii,:)~=z);
end
注意,我将length of v
添加到了1的矩阵中,这样您就可以确定矩阵中的预定义数字大于任何索引,因此min()
不会吓坏。< / p>