Expected a scalar value. This expression has size [:? x 1].

% Sample Code
max_index = find(sample.data1 == values,1,'first');
% max_index is always above 100 based on the nature of the data
X = sample.data1(max_index - 100: max_index + 100);
Y = sample.data2(max_index - 100: max_index + 100);
I was trying to generate code based on MATLAB coder, however I am stuck with the error: 'Expected a scalar value. This expression has size [:? x 1].'
I understand that max_index could be empty or (max_index - 100) could be empty, hence this error. How to properly declare those variables to avoid this error?
Max_index is scalar value and cannot be below 100 based on the nature of used data (also used If loops to avoid such condition).

 Accepted Answer

Try this:
% Sample Code
tol = 10^-3 ; % can be changed
idx = find(abs(sample.data1-values)<tol) ;
max_index = idx(1) ;

4 Comments

Thanks for quick response. The mentioned method gives the right values, but the error still persists.
I think it still cant figure out the size of 'idx' and 'max_index' (Size: Inf x Inf).
FYI, the error is highlighted in in the line: X = sample.data1(max_index - 100: max_index + 100); where max_index - 100 is highlighted in red.
Check the value of idx(1) or max_index. You need to show us the data i.e. sample and values to solve the error.
  1. Is values a single number or array?
  2. Does your sample.data1 has values less than values?
Sorry, the code works!
Previously I had pre-intialized max_index to variable size using: coder.varsize('max_index').
Removed the same and the coder generates without any error.
Thanks again. Just to clarify your question.
  1. 'Values' is a single number. (I should have declared as 'Value' here (or mentioned), to avoid confusion )
  2. sample.data1 is a (nx1) vector, n>1000.

Sign in to comment.

More Answers (0)

Categories

Find more on MATLAB Coder in Help Center and File Exchange

Products

Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!