How to delete columns from a matrix, conditionally?

1 view (last 30 days)
Adnan Barkat
Adnan Barkat on 24 Nov 2021
Commented: Adnan Barkat on 24 Nov 2021
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

Accepted Answer

Jan
Jan on 24 Nov 2021
Edited: Jan on 24 Nov 2021
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) = [];

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!