こんにちは、私はmatlabが初めてです。すべての nc ファイルを一度に mat ファイルに変換できるコードを思いつきました。for ループを使用しました。すべて問題なく、すべてのファイルを正常に変換できます。しかし、小さな欠点があります。すべてのファイルには同じ変数名があります (ワークスペースに表示されます)。これには、手動で名前を変更する必要があります。これは、私の matlab 構文の制限によるものだと思います。以下にコードを入れています。方法を提案していただけると助かります。修正後は、誰にとっても非常に時間を節約できるコードになります。
%Author--
%converting nc file to mat file
% Start_year = 1948;
% End_year = 2012;
rainfall_ncep_ncar= cell(1948, 2012);
clear
for i=1948 : 2012
% inputfile = strcat('prate.sfc.gauss.', num2str(i),'.nc');
% disp(inputfile);
rainfall_ncep_ncar{i} = strcat('rainfall_ncep_ncar', num2str(i));
% disp(rainfall_ncep_ncar_{i});
% disp(outfile);
% disp(year);
%clear other existing variables
%Output_filename = '../NCER_precipitation_rate_mat/rainfall_data_' +year;
% check ='../NCER_precipitation_rate_mat/'inputfile;
Input_path =strcat('../NCEP_precipitation_rate_nc/prate.sfc.gauss.', num2str(i),'.nc');
%display(Input_path);
ncid = netcdf.open(Input_path, 'NC_NOWRITE');
try
prateId = netcdf.inqVarID(ncid, 'prate');
catch exception
if strcmp(exception.identifier,'MATLAB:imagesci:netcdf:libraryFailure')
str = 'prateId not found';
end
end
%disp(rainfall_ncep_ncar{i});
rainfall = netcdf.getVar(ncid,prateId);
%rainfall{i}= netcdf.getVar(ncid,prateId);
Output_file = strcat('rainfall_ncep_ncar_', num2str(i),'.mat');
%disp(Output_file);
Output_path = strcat('f2/prate.sfc.gauss.', num2str(i),'.mat');
save(Output_path, 'rainfall');
disp(Output_path);
disp('done');
netcdf.close(ncid);
end
clear
私が使おうとしているとき
rainfall_ncep_ncar{i}=netcdf.getVar(ncid,prateId);
save(Output_path, 'rainfall_ncep_ncar{i}');
代わりに
rainfall = netcdf.getVar(ncid,prateId);
save(Output_path, 'rainfall');
次のエラーが表示されます
run('H:\btp\mexnc files\nc_to_mat_all.m')
Error using save
'rainfall_ncep_ncar{i}' is not a valid variable name.
Error in nc_to_mat_all (line 40)
save(Output_path, 'rainfall_ncep_ncar{i}');
Error in run (line 57)
evalin('caller', [s ';']);
f2/prate.sfc.gauss.1948.mat のような各ファイルと、prate.sfc.gauss.1948 または 1948 などのワークスペースにある対応する変数を保存したいと思います。どうすればいいのですか??
前もって感謝します !!