怎么在矩阵中挑选符合条件的数据

如果我有一个32000行,51列的数据,我要从每列中挑选出从1250到1350之间的数据,一列一列的来挑选,每列挑选出来的数据存放到一个新的矩阵中,还是按列存放。而且把挑选出来的数据在原矩阵中的位置表示出来。怎么实现呢?每列在这个范围内的数据可能会不一样多。补充,1250到1350是矩阵中元素的大小范围,不是位置范围



Min = 1250;
Max = 1350;
ColumnNum = 51;

OutputMember = cell(ColumnNum,1);
OutputIndex = cell(ColumnNum,1);
for i =1:ColumnNum
    tmp = Matrix(:,i);% tmp 列向量
    index = find((tmp<Max)+(tmp>Min));
    SelectedMember = tmp(index);
    OutputMember(i) = {SelectedMember};
    OutputIndex(i) = {index};
end
要知道符合要求的元素在原始数据矩阵中的位置,符合你要求的数据很好表达,就是(原始矩阵-1250*ones*(32000,51))>0 并且 (原始矩阵-1350*ones*(32000,51))<0,  逻辑值返回1的位置就是你要找的位置。

因为维数不同无法构成矩阵。。而用原包做就解决了这个问题。。 只是要利用这些数据的时候需要用cell2mat(Outputindex(i))并放到另一个变量中来做就行了。。



猜你喜欢

转载自blog.csdn.net/Aimer_Chen/article/details/78304676