フィルターのクリア

How to process elements in an array using stateflow if-statement?

5 ビュー (過去 30 日間)
xiao
xiao 2017 年 2 月 14 日
回答済み: Muthukumar Ganesan 2022 年 7 月 31 日
I have a simple if-statement code:
A=[1 3 10 20];
for i=1:length(A)
if A(i)>10
A(i)=10;
end
end
Then the output is: [1 3 10 10] (20->10)
How could I achieve this using stateflow? I made a constant [1 3 10 20], and drawed a chart with if statement:
Diagnosis shows error in "Attempted to assign to Simulink input 'u'. Transition '{u=10}'", which makes sense because input u is an array. I think if the input is a bus signal then may work. How to define the input and output signal as bus? Thanks.
  1 件のコメント
Saurabh Gupta
Saurabh Gupta 2017 年 2 月 17 日
1) You don't need any loops or if statements in your problem. The following statement performs the same operation.
A(A>10)=10;
2) The error "Attempted to assign to Simulink input 'u'" means that you are trying to change the value of the input, which is not allowed. You should copy the value into another variable and make updates there. For example, you can start with "y=u" and then make changes in variable "y"

サインインしてコメントする。

回答 (1 件)

Muthukumar Ganesan
Muthukumar Ganesan 2022 年 7 月 31 日
Hi,
In Stateflow with C action language without using a loop, you have to use Matlab function. i.e. Saurabh's answer can be used inside the inserted matlab function.
Thanks.

カテゴリ

Help Center および File ExchangeSimulink Functions についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by