#条件を満たした場合のみ計算を行いたいです。(MATLAB)
if文とforループを用いてコードを作成しているのですが、上手くいきません。
コードの概要としては、以下になります。
MATLAB
1or od = 1:ODNum 2 3 for link = 1:STLinkNum 4 if link >210 5 a = 0; 6 end 7 8 if STLink(link,2) == 11||STLink(link,2) ==12||STLink(link,2) == 13%タイプを指す(移動リンク) 9 STLinkUtility(od,link) = B; 10 11 elseif STLink(link,2) == 21||STLink(link,2) == 22%アクティビティリンク 12 13 if STLink(link,12) == ODActivityData(od,1) 14 sigma = あ; 15 lambda = い; 16 xi = う; 17 U_max = え; 18 U_0 = お; 19 A = 1; 20 21 22 elseif STLink(link,12) == ODActivityData(od,11) 23 sigma = か; 24 lambda = き; 25 xi = く; 26 U_max = け; 27 U_0 = こ; 28 A = 1; 29 30 elseif STLink(link,12) == ODActivityData(od,17) 31 sigma = さ; 32 lambda = し; 33 xi = す; 34 U_max = せ; 35 U_0 = そ; 36 A = 1; 37 38 39 else A = 0; 40 41 if A == 1 42 43 t1 = た 44 t2 = ち 45 46 STLinkUtility = C 47 48 49 else 50 51 t1 = つ 52 t2 = て 53 54 STLinkUtility = D 55 56 57 end 58 59 60 end 61 62 end 63 64 end 65 66end
STLinkUtilityについて行いたい作業のフローを以下に書きます。
①タイプが11、12、13である場合はSTLinkUtility=B という計算を行う。
②タイプが21、22であり、かつSTLink(link,12) == ODActivityData(od,1)、
またはSTLink(link,12) == ODActivityData(od,11)、
またはSTLink(link,12) == ODActivityData(od,17)
の3パターンである場合は
STLinkUtility=C
という計算を行う。
③タイプが21、22であり、②の3パターンでない場合は
STLinkUtility=D
という計算を行いたい。
フロー番号②と③を差別化するために②であるときはA=1を付加しており、③であるときはA=0を付加しています。
このコードで上記の作業ができますでしょうか?
デバッカーで確かめたところ、Cの計算ができていませんでした。
MATLAB、teratail初心者のため分かりにくい表記で申し訳ございません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/13 01:47