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

38 views (last 30 days)
% 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

KSSV
KSSV on 1 Feb 2023
Try this:
% Sample Code
tol = 10^-3 ; % can be changed
idx = find(abs(sample.data1-values)<tol) ;
max_index = idx(1) ;
  4 Comments
Praveen Kumar
Praveen Kumar on 1 Feb 2023
Edited: Praveen Kumar on 1 Feb 2023
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.
Praveen Kumar
Praveen Kumar on 1 Feb 2023
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!