How to delete columns from a matrix, conditionally?

3 visualizaciones (últimos 30 días)
Andi
Andi el 24 de Nov. de 2021
Comentada: Andi el 24 de Nov. de 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

Respuesta aceptada

Jan
Jan el 24 de Nov. de 2021
Editada: Jan el 24 de Nov. de 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) = [];

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by