I have some problem with linspace operator inside simulink.
I want to take a decision among a finite set of angles, which I define as
delta = linspace(-r_max*Tc_usbl,r_max*Tc_usbl,decisions)
r_max being the maximum angular velocity, Tc_usbl the control period, 'decisions' the number of angles I want in my set. In the Command Window everything works fine; and iy should work in Simulink too, since I succesfully tried
function fcn()
delta_max = -0.1; decisions = 3;
for delta = linspace(-delta_max,delta_max,decisions)
delta
end
But my code actually is
function fcn(r_max,Tc_usbl,decisions)
for delta = linspace(-r_max*Tc_usbl,r_max*Tc_usbl,decisions)
delta
end
Where all arguments are static parameters from the Workspace.
I get the following error:
FOR loop index expressions of unknown size are only supported if they are of the form A:B or A:B:C
If it is not possible to use linspace the way I'd like to, does someone has any other idea? But how can I get with colon something similar to
linspace(-pi/4,pi/4,2)

 채택된 답변

Stephen23
Stephen23 2021년 9월 17일
편집: Stephen23 2021년 9월 17일

1 개 추천

In MATLAB it is usually better to loop over indices. Perhaps this would work:
V = linspace(-r_max*Tc_usbl,r_max*Tc_usbl,decisions);
for k = 1:numel(V)
delta = V(k)
... do whatever with delta
end

댓글 수: 1

Matteo Paiano
Matteo Paiano 2021년 9월 17일
I really appreciate that! Such an elegant and simple solution! How silly of me

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

질문:

2021년 9월 17일

댓글:

2021년 9월 17일

Community Treasure Hunt

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

Start Hunting!

Translated by