如何根据其他列中存在的数字将列保留在新数组中?

时间:2017-08-16 18:27:27

标签: arrays matlab matrix

我有这个矩阵:

aux333=[2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   70 ;
        3   0  ;
        2   0  ;
        2   0  ; 
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   208;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        2   0  ;
        0   37 ;
        0   0  ;
        0   0  ;
        0   0  ; 
        0   0  ]

我想编写一些代码,如果第一列与零不同,则新数组(aux3final)将收到aux333的第二列。

我试着这样写:

for j=1:length(aux333)
  if aux333(j,1)==2 | aux333(j,1)==3
     aux3final(j)=aux333(j,2);%%aux3final tá com dimensão 296, devia estar com dimensão 69
  end

但这根本不起作用。怎么办?

原始代码比我发布的代码更大,可能会有一些变量影响某些东西。

1 个答案:

答案 0 :(得分:1)

正如Sardar所指出的那样,目前尚不清楚最终的矢量(aux3final)是否应该具有

1)与输入矢量(aux333)的长度相同

%find entries of interest
flg_valid=aux333(:,1)>0;
%alloc output
aux3final=zeros(size(aux333,1),1);
%copy index depending
aux3final(flg_valid)=aux333(flg_valid,2);

2)它具有感兴趣的条目的长度

%extract only entries of interest
aux3final=aux333(flg_valid,2);