循环打破向量MATLAB

时间:2016-05-08 23:14:06

标签: matlab vector

我有一个载体

   A = [ 1 1 1 1 2 2 2 4 4 6 7 ]

我要编写一行代码,在向量中的每个唯一值之后循环遍历向量将其拆分为两个。 例如:

第一个循环会给出

A1 = [ 1 1 1 1 ]
A2 = [2 2 2 4 4 6 7 ]

第二个循环将给出

A1 = [ 1 1 1 1 2 2 2 ] 
A2 =  [ 4 4 6 7 ]

等等,直到最终的载体

A1 = [1 1 1 1 2 2 2 4 4 6]
A2 = [7]

谢谢!

2 个答案:

答案 0 :(得分:0)

这种方法怎么样:

A = [ 1 1 1 1 2 2 2 4 4 6 7 ];

solutions=0;
for i=1:size(A,2)
    j=i+1;
    if(j<=size(A,2))
        if(A(1,i)~=A(1,j))
            solutions=solutions+1;
            B1{solutions}(1,:)=A(1,1:i);
            B2{solutions}(1,:)=A(1,i+1:end);
        end
    end
end

循环遍历完整数组并检查两个相邻的条目是否存在不等式。如果是,则子矢量保存在两个单元阵列中。一个用于第一部分,一个用于所有第二部分。

答案 1 :(得分:0)

使用差异法

A = [ 1 1 1 1 2 2 2 4 4 6 7 ]
D = A(1:end-1)==A(2:end)
B = find(D==0)
for ii = 1:length(B)
A1 = A(1:B(ii))     
A2 = A(B(ii)+1:end) 
end