Error in using reshape
Mostrar comentarios más antiguos
the error stated: Number of elements must not change. Use [] as one of the size inputs to automatically calculate the appropriate size for that dimension.
i'm doing a reshape in producing a taylor diagram. im using the same script but now it's not working because of this reshape issue.
i used reshape as follows;
for observation data;
dimN = length(size(getOBS));
xbox = size(getOBS, dimN-1);
ybox = size(getOBS, dimN );
data = ones(length(exp)+1,xbox*ybox);
data(1,:) = reshape(squeeze(getOBS),1,xbox*ybox);
for experiment;
data(expcount+1,:) = reshape(squeeze(getDAT),1,xbox*ybox);
previously i did the same for a different set of experiments, and did not have any issues. do you know how i can fix this?
the script is attahced
8 comentarios
Sharifah Omar
el 5 de Dic. de 2022
Image Analyst
el 5 de Dic. de 2022
What does this show in the command window:
temp = squeeze(getDAT);
size(temp)
numel(temp)
xbox*ybox
fprintf('Number of columns in data = %d.\n', size(data, 2));
cr
el 5 de Dic. de 2022
Perhaps you now have singleton dimensions while you didn't earlier?
Sharifah Omar
el 5 de Dic. de 2022
Editada: Sharifah Omar
el 5 de Dic. de 2022
Voss
el 5 de Dic. de 2022
@Sharifah Omar: getDAT is cleared at the end of the big for loop in your script (line 144), along with data and getOBS:
clear data getOBS getDAT
so you won't be able to get any info about them after that.
Try commenting-out that line, run the script again, and then tell us what running these commands gives you:
size(getOBS)
expcount
size(getDAT)
Sharifah Omar
el 6 de Dic. de 2022
Voss
el 6 de Dic. de 2022
Please tell us the size of getOBS, the value of expcount, and the size of getDAT.
Image Analyst
el 6 de Dic. de 2022
When I run your script, I get this:
>> Copy_of_DJF_region1
Unrecognized function or variable 'nc_varget'.
Error in Copy_of_DJF_region1 (line 33)
getOBS = nc_varget('ERA5_DJF_north.nc',var{varcount});
Please attach that nc_varget() function and the file called 'ERA5_DJF_north.nc'
Respuestas (1)
KSSV
el 6 de Dic. de 2022
The error is simple....you are trying to reshape more number of elements than present in the matrix.
EXample:
A = rand(9,1) ;
B = reshape(A,3,3) ; % as nine lements present in A, you can have 3,3 combination. Nothing lese combination possilbe
C = reshape(A,2,4) ; % error. You cannot have eight elements from nine. If you want to have
D = reshape(A(1:8),2,4) ; % here eight elements are picked and reshaped into eight elements
Note: If A has m*n elements. You can reshape A into m1,n1 so that m1*n1 = m*n.
Categorías
Más información sobre Particle & Nuclear Physics en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!