Simulinkで文​字変数を入力値として​読んで、それに対応す​る数値を返す方法を教​えて下さい。

조회 수: 5 (최근 30일)
tomoki fujii
tomoki fujii 2021년 9월 14일
댓글: Toshinobu Shintai 2021년 9월 14일
例えば
文字変数はA,B,Cの3種類あって
ユーザーがいずれかの文字をインプットし
Aなら2, Bなら4, Cなら7
を返すというように

답변 (1개)

Toshinobu Shintai
Toshinobu Shintai 2021년 9월 14일
文字列系のブロック「String Constant」や「String Compare」を用いて、添付ファイルのようにすると作れるのではないでしょうか。添付モデルはR2021aで作成しています。
「my_func.slx」は文字列を比較して該当する数値を出力する機能、「system_model.slx」は参照モデルでmy_funcを呼び出しています。
  댓글 수: 2
tomoki fujii
tomoki fujii 2021년 9월 14일
文字列変数をMATLABで配列を使って定義する方法はないでしょうか。
変数が数十個以上となると、ご提案の手法でもできなくはないですが規模が大きくなってしまいます。
Toshinobu Shintai
Toshinobu Shintai 2021년 9월 14일
Simulinkでは文字列配列をサポートしていないため、変数が多数ある場合は効率よくモデリングを行うことができません。申し訳ありません。
代替案としては、列挙型を用いる方法があります。サンプルを添付しました。
「my_func_2.slx」では、MATLAB Functionブロックで入力された文字列と、列挙型を文字列に変換したものを比較しています。
function y = fcn(u, text_list)
y = text_list(1);
for i = 1:numel(text_list)
if strcmp(u, string(text_list(i)))
y = text_list(i);
end
end
end
「ENUM_TEXT」という列挙型、及び「text_list」という列挙型の変数は、「system_data.sldd」にて定義しています。

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

카테고리

Help CenterFile Exchange에서 プログラムによるモデル編集에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!