How to delete columns from a matrix, conditionally?

3 vues (au cours des 30 derniers jours)
Andi
Andi le 24 Nov 2021
Commenté : Andi le 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

Réponse acceptée

Jan
Jan le 24 Nov 2021
Modifié(e) : Jan le 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) = [];

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by