Assignment has more non-singleton rhs dimensions than non-singleton subscripts
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
% open binary file for
% Polar Pathfinder mean monthly 25 km EASE-Grid Sea Ice Motion Vectors, Version
folderpath = 'C:\Users\sk\Documents\MATLAB\nsidc0116_ice_motion_vector_v3\';
years = 1979:2014;
sid_allyears = zeros(361,361,12,36);
yearindex = 0;
for j = years;
disp(j);
yearindex = yearindex+1;
stryear = num2str(j);
filepath = fullfile(folderpath,stryear);
files = dir(fullfile(filepath,'\icemotion.grid.month.*.n.v3.bin') );
files = {files.name};
r_years = []; % (361,361,12)
d_years = []; % (361,361,12)
mm = 0 ;
for i=1:numel(files);
disp(files{i});
mm = mm+1;
filename = fullfile(filepath,files{i});
fid = fopen(filename);
rawdata = fread(fid,[361, inf],'int16');
fclose(fid);
% reshape it into a [3x361x361] matrix
tdata = reshape(rawdata,[3, 361, 361]);
% change 3d matrix to simple matrix, and divide by 10 to get cm/second
u = squeeze(tdata(1,:,:)./10.);
v = squeeze(tdata(2,:,:)./10.);
error = tdata(3,:,:)./10;
[TH,R] = cart2pol(v,u);
D = rad2deg(TH);
r_years(:,:,mm) = R;
d_years(:,:,mm) = D;
end
sid_allyears(:,:,:,yearindex) = r_years;
end
0 Kommentare
Antworten (1)
Walter Roberson
am 28 Mär. 2016
Your line
r_years(:,:,i) = R;
implies that r_years will be a 3D matrix with the third dimension being as large as the number of files.
Your line
sid_allyears(:,:,j) = r_years;
implies that r_years is a 2D matrix (since j is a scalar.)
This is a fundamental mismatch in expectation about what your r_years matrix is and what your output size should be. Should your third dimension of sid_allyears() be the year index, or should it be the file number index?
4 Kommentare
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!