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

조회 수: 60 (최근 30일)
Praveen Kumar
Praveen Kumar 2023년 2월 1일
댓글: Praveen Kumar 2023년 2월 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).

채택된 답변

KSSV
KSSV 2023년 2월 1일
Try this:
% Sample Code
tol = 10^-3 ; % can be changed
idx = find(abs(sample.data1-values)<tol) ;
max_index = idx(1) ;
  댓글 수: 4
Praveen Kumar
Praveen Kumar 2023년 2월 1일
편집: Praveen Kumar 2023년 2월 1일
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 2023년 2월 1일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Boundary Conditions에 대해 자세히 알아보기

태그

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by