A有两个矩阵True
我<1x100 double>
。在基质B的一些列中存在NaN。我想要做的是在A和B之间得到差异(比如A比B高5),其中A和B都存在。我想将它显示为局部最大值,只需使用plot(A,B)
打印出来。
示例:当max(A)= 20且B = 10时我想要显示:A比B多10个。然后当A再次变为30时我想要显示:max(A)比B多20个
非常感谢帮助!
答案 0 :(得分:1)
ValidData = ~isnan(A) & ~isnan(B); % Get all indices where both exist
plot(A(ValidData),B(ValidData));
isnan
为您提供NaN
的所有元素,否定此(~
),您将获得所有非NaN值。然后,这可以用作A
和B
的逻辑索引。
要获得最大值,请执行AndrasDeak suggests
nanmax(A-B)
更新:显然max
现在默认省略NaN值,因此您可以直接使用它:
[MaxValue,MaxPosition] = max(A-B);
答案 1 :(得分:0)
我不确定你想要忽略nan并将矢量减少到数字,或者只是忽略其中一个值为nan的部分。对于后一种情况:
%show you the difference
C=A-B
% ~ means you ignore that output, and the second output of max is the postion
[~,position]=max(A-B);
disp(['At Position ' num2str(position) ' A is ' num2str(A(position)) ' and ' num2str(A(position)-B(position)) ' bigger than B'])