I'm running an m-file, creating two variables, Clus
and Watts_Map
. I want to save both variables to a file that ends in ".mat". Both are variables are dimensioned as (1152,241,319), with 1152 as 360 deg longitude in 0.3125 deg increments, 241 as latitude from 30S-30N in 0.25 deg increments, over 319 time steps. Code works all the way until the end, where I get the error:
[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...]
I am using Matlab version R2014a, so would think that this is the most current version. Also, I have run the same exact code over a smaller spatial domain (but over 2920 timesteps) without error.
% 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
Even in the current version, the default format is not v7.3. You must specify it:
save(matfile, '-v7.3', 'var1', 'var2');
You can also set the default in "General Preferences":
Note that v7.3 does compress data as of R2008a:
Compression of -v7.3 MAT-Files
You can store data items that are over 2 gigabytes in size in a MAT-file using the -v7.3 option for the save function. This option was introduced in MATLAB R2006b. With MATLAB R2008a, save now compresses these MAT-files.
I've seen file size blow up for v7.3 files, but that is history and perhaps it's better now.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With