switch文で同じ​処理を複数のcase​で実行したい

118 ビュー (過去 30 日間)
mayu
mayu 2023 年 3 月 16 日
コメント済み: mayu 2023 年 3 月 16 日
タイトル通りなのですが、switch文で複数のcaseで同じ処理を実行したいと思っています。
やりかたをググってマトラボのページは見つけられなかったのですが、C言語のページでイメージと似たものがあったので、
●switch文で複数のcaseで同じ処理を実行する
マネして書いてみたところ、
switch abcde
case 'A'
case 'B'
~ ABの場合に処理したい内容 ~
・・・
実行したら、Aが無視されていました。
switch abcde
case 'A'
~ ABの場合に処理したい内容 ~
case 'B'
~ ABの場合に処理したい内容 ~
・・・
と分けて書いたらできますが、無駄な感じがするのでやっぱりまとめたいです。
●switch caseのヘルプページ
もみていたのですがこのパターンが見当たらず、どう直したら実行されるのかわからなくて質問をさせていただきました。
わかる方がいらっしゃいましたら、お手数をおかけいたしますがご教示いただけますと幸いです。
どうぞよろしくお願いいたします。

採用された回答

Atsushi Ueno
Atsushi Ueno 2023 年 3 月 16 日
>switch文で複数のcaseで同じ処理を実行 ⇒ その事をフォールスルーと呼びます。
MATLABはSwitch文がフォールスルーしない言語の為、いずれか一つのcase文しか通りません。
for abcde = 'ABC'
fprintf('abcde = ''%c''\n',abcde);
switch abcde
case 'A'
disp('~ abcde==''A'' の場合に処理したい内容 ~');
case 'B'
disp('~ abcde==''B'' の場合に処理したい内容 ~');
otherwise
disp('~ その他の場合 ~')
end
end
abcde = 'A'
~ abcde=='A' の場合に処理したい内容 ~
abcde = 'B'
~ abcde=='B' の場合に処理したい内容 ~
abcde = 'C'
~ その他の場合 ~
>どう直したら実行されるのか
下記の様な書き方で実行可能です。比較対象を複数個に出来ます。ドキュメントには下記の通り記載されています。
  • switch_expression は、スカラーまたは文字ベクトルでなければなりません
  • case_expression は、スカラー、文字ベクトル、またはスカラーか文字ベクトルの cell 配列でなければなりません。
for abcde = 'ABC'
fprintf('abcde = ''%c''\n',abcde)
switch abcde
case {'A','B'} % case_expression を文字ベクトルの cell 配列にする
disp('~ abcde==''A'' または abcde==''B''の場合に処理したい内容 ~');
otherwise
disp('~ その他の場合 ~')
end
end
abcde = 'A'
~ abcde=='A' または abcde=='B'の場合に処理したい内容 ~
abcde = 'B'
~ abcde=='A' または abcde=='B'の場合に処理したい内容 ~
abcde = 'C'
~ その他の場合 ~
  1 件のコメント
mayu
mayu 2023 年 3 月 16 日
早々にありがとうございます!教えていただいた通りにしたらできました(>_<)
ヘルプにも記載があったのですね・・・(*_*; 
マトラボのヘルプ、いつも探し出せなかったり内容を読み解けなかったりしているのですが、私にもわかるように詳しく教えていただき、とても有難いです。
これも使いたい場面が多くありそうなのでうれしいです。ありがとうございました( ◠‿◠ )

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!