我有两个80 * 80矩阵。我想绘制归一化频率图。我尝试使用以下代码规范化80 * 80网格:
A = per_monsoon_postmon; % (A is my 80*80 matrix)
A = rand (80,80);
minA = repmat(min(A), [size(A, 1), 1]);
normA = max(A) - min(A);
normA = repmat(normA, [length(normA) 1]);
normalizedA = (A - minA)./normA;
但是这段代码并没有给我想要的结果,因为nan
值的网格中也有一个数字。例如。早期网格1 * 1为nan
,现在它的值为0.8340。你能帮我看看如何规范二维矩阵,然后在MATLAB中绘制频率分布图吗?有没有办法直接绘制归一化频率分布图?
答案 0 :(得分:0)
如果您的verctor中有nan值,则可能会遇到问题。我会先替换nans(例如用零)。
0到1之间的归一化就像这样:
a=rand(80,80); %generates random 80x80 array
a=a-min(min(a)); %shifts the values from 0 to n, min(min() ) because it is 2x2
a=a./max(max(a));% shifts to 0 to 1
如果你想在3d中绘制这些值,我会使用一个冲浪图,因此你首先生成样本值,然后给它们提供z值
[x,y]=meshgrid(1:80);
surf(x,y,z)