我有一个矩阵12 * 4,我需要减去不同行的第3列元素

时间:2016-08-10 20:06:59

标签: matlab

我在MATLAB中有一个12x4矩阵,

A =[-1,    3,   152,    41.5 ;
     3,    9,   152,    38.7 ;
     9,   16,   152,    38.7 ;
    16,   23,   129,    53.5 ;
    23,   29,   129,    53.5 ;
    29,   30,   100,   100   ;
    30,   30.5, 83,     83   ;
    30.5, 31,   83,     83   ;
    31,   35,   83,     83   ;
    35,   41,   129,    53.5 ;
    41,   48,   129,    53.5 ;
    48,   55,   152,    38.7 ] ;

我需要通过从上一行第3列元素中减去第2行的第3列元素来查找行中的更改(如果它们不同),如果相同则转到第3行。

答案应采用以下形式:

  B = [16, 23;
       29, 29;
       30, 17;
       35, 46;
       48, 23]

例如,第3和第4行第3列元素不同,所以如果减去我得到23.输出B第1列元素将由第4行第一列元素组成。

1 个答案:

答案 0 :(得分:2)

%Given matrix
A =[-1,     3,   152,    41.5 ;
     3,     9,   152,    38.7 ;
     9,    16,   152,    38.7 ;
    16,    23,   129,    53.5 ;
    23,    29,   129,    53.5 ;
    29,    30,   100,   100   ;
    30,    30.5,  83,    83   ;
    30.5,  31,    83,    83   ;
    31,    35,    83,    83   ;
    35,    41,   129,    53.5 ;
    41,    48,   129,    53.5 ;
    48,    55,   152,    38.7 ] ;

B=A(:,2:3);    %Taking out the columns of our interest
B = B([diff(B(:,2))~=0; true],:);   %Storing only those rows whose consecutive elements in the third column of A are different
B=[B(1:end-1,1) abs(diff(B(:,2)))] % First column is according to your condition and second column is the difference