Select columns from a matrix by treshold value
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Esma Hadu
el 29 de Ag. de 2021
Respondida: Esma Hadu
el 13 de Oct. de 2021
Hi,
i have some data stored in a 7200*600 matrix (600 could also be 300 or 1000 or something in this range). Somewhere in the middle there are some relevant columns (about 20) which contains higher values than the other. I would like to extract these columns for some calculation (row mean only for these columns etc.). So far i do this by:
M = mean(data);
B = (M > min(M)*1.1); % Treshold of 110 %
data_new = B.*data;
data_new(:,all(data_new == 0))=[]; % Removes columns if the entire column is zero
Then i can calculate the mean like:
data_new_mean = mean(data_new(:,3:end),2); % First two columns are suspect data
This works fine so far but i'm looking for a way to get the indices and work with the original matrix instead of building a new one. In the next step i have to extract the data in the following columns (If the relevant columns before were 200, 210, 220... for example, i need 201, 211, 221... in the next step) and that's why the first way isn't convenient anymore. Do you have some ideas?
3 comentarios
Walter Roberson
el 30 de Ag. de 2021
M = mean(data);
B = (M > min(M, 1)*1.1);
mask = any(M >= B, 1);
mask can now be used as a column index.
Respuesta aceptada
Más respuestas (1)
Matt J
el 30 de Ag. de 2021
Editada: Matt J
el 30 de Ag. de 2021
find( any(M > min(M)*1.1 ,1) )
2 comentarios
Walter Roberson
el 30 de Ag. de 2021
That would find the columns that contain only data less than the threshold; the user wanted to find columns that contain at least one datapoint greater than the threshold.
Ver también
Categorías
Más información sobre Other Formats en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!