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에서 General Applications에 대해 자세히 알아보기

태그

질문:

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