Assignment has more non-singleton rhs dimensions than non-singleton subscripts
Show older comments
% 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
Answers (1)
Walter Roberson
on 28 Mar 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 Comments
Sophia
on 28 Mar 2016
Edited: Walter Roberson
on 28 Mar 2016
Walter Roberson
on 28 Mar 2016
Your j iterates through "years" and you use that as a subscript, but we readers do not know what it contains. Meanwhile you have established a "yearindex" that would appear to be something you would want to index with but you are not...
Walter Roberson
on 1 Apr 2016
sid_allyears(:,:,:,yearindex) = r_years;
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!