저는 m- 파일을 실행하여 과 Watts_Map
의 두 변수를 만듭니다. 두 변수를 ".mat"로 끝나는 파일에 저장하려고합니다. 둘 다 변수는 (1152,241,319)로 크기가 정해지며, 1152는 360도 경도로 0.3125도 증분으로, 241은 30S-30N에서 0.25도 증분으로 319 시간 간격으로 허용됩니다. 코드는 모든 방법 나는 오류가 마지막까지 작동합니다.mat 파일을 저장하고 -v7.3 스위치를 사용 하시겠습니까?
[Warning: Variable 'Clus' cannot be saved to a MAT-file whose version is older
than 7.3.
To save this variable, use the -v7.3 switch.
Skipping...]
[Warning: Variable 'Watts_Map' cannot be saved to a MAT-file whose version is
older than 7.3.
To save this variable, use the -v7.3 switch.
Skipping...]
내가 matlab에 버전 R2014a를 사용하고, 그래서 이것은 최신 버전이라고 생각합니다. 또한 오류없이 작은 공간 도메인 (그러나 2920 개 이상의 타임 스텝)에서 똑같은 코드를 실행했습니다.
% Clear all variables, initialize counter, indexed by timestep
clc;
clear all;
rain = NaN(1152,241,319);
Clus = NaN(1152,241,319);
Areas_Final = NaN(500,319);
Wattage_Final = NaN(500,319);
Cluster_size = zeros(319,1);
Watts_Map = zeros(1152,241,319);
for year = 2000%:2008;
Nyear = sprintf('%04d',year);
% Call on the files for each year
filename = (['pr_3hr_GFDL-HIRAM-C360_amip_r1i1p1_' num2str(Nyear) '010100-' num2str(Nyear) '123123_subset_TROPICS.nc']);
disp(filename)
disp(year)
rain_rate = ncread(filename,'pr');
% Call on each timestep
for i = 960:4:2236; % Approx May 1st-Sep 30th
% Set extract subset for region, mask land areas, for each
% timestep
disp(i)
rain = rain_rate(:,:,i);
% Eliminate bad/no data points
index_rain = (rain >= (5.4e-05)) & (rain < 1e-2); % 0.2mm/hr is min rain rate
% Cluster each morning and afternoon matrix
Clus(:,:,i) = cluster_it(index_rain);
% Calculate cluster areas
Areas = cluster_areas_TROPICS(Clus(:,:,i));
Areas_Final(1:length(Areas),i) = Areas;
% Calculate cluster wattages
Wattage = cluster_wattage(Clus(:,:,i),rain);
Cluster_size(i,1) = max(max(Clus(:,:,i)));
% Create dummy matricies to populate and use to create the wattage
% maps
D = zeros(1152,241);
E = squeeze(Clus(:,:,i));
for index = 1:Cluster_size(i);
D(E == index) = Wattage(index);
end
Watts_Map(:,:,i) = D;
% Clear the dummy matricies
clear D E
end
% Save the output as a .mat file
file_out = sprintf(num2str(Nyear), year);
matfile = [file_out '_TROPICS_Watts_Maps_inc_Land_low_rain_threshold.mat'];
save(matfile, 'Clus', 'Watts_Map');
% Clear unneeded variables to save memory and prevent overwriting
clear index_rain rain Areas Wattage Clus file_out filename Areas_Final rain_rate Watts_Map Cluster_size year matfile
end
v7.3은 약간 수정 된 HDF5 형식입니다. HDF5에서 압축을 사용할 수 있으며 빠른 테스트를 통해 MATLAB이 실제로 데이터를 압축한다는 것을 알 수 있습니다. 나를 위해 v6, v7 및 v7.3에 저장된 동일한 데이터는 각각 14MB, 989KB 및 943KB 크기의 파일을 생성합니다. 이것은 v7.3이 데이터를 압축 할뿐만 아니라 실제로 v7 압축을 이길 수 있음을 시사합니다. MATLAB이 기본적으로 v7.3을 사용하지 않는 이유는 파일 크기가 복잡한 중첩 구조/셀 배열에 약간의 변화가있는 경향 때문일 수 있습니다. – MrAzzaman
@MrAzzaman 압축하는 것이 좋습니다. 그것은 익숙하지 않았고 그 사실은 큰면이있었습니다. [릴리스 정보] (http://www.mathworks.com/help/matlab/release-notes-older.html#br0xe_f)에 따르면 R2008a 인 것처럼 보입니다. – chappjc