【问题标题】:Loops to break up a vector MATLAB循环分解向量 MATLAB
【发布时间】:2016-05-08 23:14:05
【问题描述】:

我有一个向量

   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]

谢谢!

【问题讨论】:

  • 你必须使用循环吗?

标签: matlab vector


【解决方案1】:

这个方法怎么样:

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

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

【讨论】:

    【解决方案2】:

    使用微分法

    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
    

    【讨论】:

      猜你喜欢
      • 2015-07-06
      • 2013-02-18
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      相关资源
      最近更新 更多