The error is known to MATLAB and will be fixed in the future
reshape() error in the function created by matlabFunction()
5 views (last 30 days)
matlabFunction() has generated for me AmplAndDers() to be used in fminunc(). The very first objective function evaluation fails:
Error using reshape
Number of elements must not change. Use  as one of the size inputs to automatically calculate the appropriate size for that dimension.
Error in AmplAndDers (line 93)
Hess = reshape([-t2.*t3.*t4. ... .*(3.0./4.0)],[4,4]);
The signature of the function is:
function [Ampl,GradA,Hess] = AmplAndDers(C1_0,C2_0,R1_0,R2_0,w,x1,x2,x3,x4)
I call it with a w being an array. Two other outputs are returned correctly. I do not understand what does the above suggestion mean:
Use  as one of the size inputs to automatically calculate the appropriate size for that dimension.
If I manually change the above reshape() call to end with:
the program runs OK.
How can avoid the manual intervention?
More Answers (1)
KSSV on 21 Aug 2021
Read the documentation of reshape and understand it. The error is clear, you are trying to create extra elements than present in the array while reshaping.
A = rand(1,25) ;
B = reshae(A,5,5) ; % 5*5 = 25, no error as same elements present
C = reshape(A,6,5) ; % 6*5 = 30, error as A as 30 elements only.