How to delete columns from a matrix, conditionally?

3 次查看(过去 30 天)
My data matrix consists of 400 colomns (about 25000 rows). Data set consists of number and NaN. I want to delete the columns having less than 100 data points.
My attempt is as below:
clear all
clc
%a=importdata('test_file.txt');
data=load('DATA_0.01.csv');
%My attempt
for k = 1:size(data,2);
if sum(~isnan(data(:,k)))<100;
data = [data(:,1:k-1),data(:,k+1:end)];
end
end

采纳的回答

Jan
Jan 2021-11-24
编辑:Jan 2021-11-24
keep = sum(~isnan(data), 1) >= 100;
data = data(:, keep);
Your approach does not work, because the matrix data is changed, but the counter k is not adjusted accordingly. With a loop:
remove = true(1, size(data, 2));
for k = 1:size(data,2);
remove(k) = sum(~isnan(data(:,k))) < 100;
end
data(:, remove) = [];

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

产品


版本

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by