我有一个 3D 数据(气候变量), (x=33,y=35,z=27) 其中 x,y 指的是网格点,z 是时间(以年为单位)。在给定的时间段内,我需要网格明智的 RMSE。我必须在计算 RMSE 之前屏蔽文件。掩码文件和数据的维度相同(包括时间)。没有。必须找到 RMSE 的网格在掩蔽后减少(33*35=1155 到 357)。在重塑原始数据后,我发现了这些简化网格的 RMSE。现在我有一个 RMSE (357*1) 的列矩阵,它必须在 2d 中显示,即用于相应的网格 (33*35)。如何执行从 1d 较小阵列到 2d 较大阵列的重塑?我的代码是:
IMD_load=load('IMD.mat'); % mask file cum observation data
IMD1=IMD_load.IMD_OBS;
IMD(:,:,:)=IMD1(:,:,1:27); % I'm doing only for 27 yrs of available time period
CFS_load=load('CFS.mat'); % model data
CFS1=CFS_load.CFSV2;
CFS2=CFS1(:,:,1:27); % I'm doing only for 27 yrs of available time period
CFS=CFS2-273.15;
for i = 1:1:27
IMD2=IMD(:,:,i);
IMD_1=reshape(IMD2,1155,1);
IMD_1(isnan(IMD_1))=0;
[IMD_m]=find(IMD_1==0);
% CFS3=CFS(:,:,i);
CFS4=reshape(CFS(:,:,i),1155,1);
CFS4(IMD_m,:)=0;
CFS5=reshape(CFS4,1155,1);
CFS6(:,i)=CFS5;
end
% 我必须运行上面的 for 循环,因为每年都没有。具有 NaN 的网格是变化的
OO1=reshape(IMD,1155,27);
MM1=reshape(CFS,1155,27);
OO2=reshape(OO1,1155*27,1); % is this corret?
MM2=reshape(MM1,1155*27,1); % is this corret?
[cfs6_m]=find(CFS6~=0);
[cfs6_m2]=find(CFS6==0);
OO3=reshape(OO2(cfs6_m,:),357,27); % (OR) OO4=reshape(OO2(cfs6_m),357,27);
MM3=reshape(MM2(cfs6_m,:),357,27); % (OR) MM4=reshape(MM2(cfs6_m),357,27);
for i = 1:1:357
r2(i,:)=sqrt(sum((OO3(i,:)-MM3(i,:)).^2)/27);
end
% RR(1155,1)=reshape(R,33,35);
% 我现在只剩下 'r1'(357*1)。但是如何将其转换回 33*35 ???