indices when the columns are all nan
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I am using [m, d] = nanmax (r_all); to get the maximum values and corresponding indices in matlab. There are several columns in r_all in which all the elements are nans. Unfortunately, nanmax returns '1' in indices for those columns that have all nans. However, there are actual indices that are value '1' so it creates confusion. How can I force matlab to return 'a' or 'b' as the output instead of returning 0' or '1'? Could you please suggest other solutions to this problem?
6 Kommentare
Akzeptierte Antwort
Stephen23
am 16 Mär. 2016
Bearbeitet: Stephen23
am 16 Mär. 2016
There is no need to waste time using slow and ugly loops and if statements. You can locate those "incorrect" indices very simply using basic MATLAB indexing:
>> mat = [0,1,2,NaN,3,NaN;4,NaN,5,NaN,6,NaN;7,8,NaN,NaN,NaN,9]
mat =
0 1 2 NaN 3 NaN
4 NaN 5 NaN 6 NaN
7 8 NaN NaN NaN 9
>> [m,idx] = nanmax(mat) % max value and its indices
m =
7 8 5 NaN 6 9
idx =
3 3 2 1 2 3
>> idx(all(isnan(mat),1)) = NaN % replace all-NaN indices with NaN
idx =
3 3 2 NaN 2 3
3 Kommentare
Weitere Antworten (1)
KSSV
am 16 Mär. 2016
clc; clear all ;
load data.mat ;
[m,n] = size(data) ;
idx = zeros(n,1) ;
val = idx ;
% column wise
for c = 1:n
[i,j] = nanmax(data(:,c)) ;
if isnan(i)
j = 50 ;
end
idx(c) = j ;
val(c) = i ;
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!