Having no luck with the suggestions I dare to submit it is a bug hoping to get a response from Staff. Afterall the produced message is unclear: what does it mean to 'Use []'  in the code that MATLAB generates.?
reshape() error in the function created by matlabFunction()
    7 views (last 30 days)
  
       Show older comments
    
    Valeri Aronov
 on 21 Aug 2021
  
    
    
    
    
    Answered: Valeri Aronov
 on 3 Sep 2021
            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:
        ...*(3.0./4.0)],[4,4,length(w)]);
the program runs OK.
How can avoid the manual intervention?
4 Comments
Accepted Answer
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. 
Example:
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. 
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

