OutportブロックからsimOutコマンドを使ってワークスペースから値取得すると計算過程でエラーが出ます
1 view (last 30 days)
Show older comments
OutportブロックからsimOutコマンドを使ってワークスペースから値を取得すると計算でできずに 下記のようなエラーが出ます。
エラー: ^ 入力はスカラーと正方行列でなければなりません。 POWER を要素ごとに計算するには、代わりに POWER (.^) を使用してください。
^ の部分を .^ にも変えましたが結果は変わりませんでした。 ワークスペースに書き出される行列がそろっていないために 計算できていないと思われるですが、エラーの意味の解釈はあっているでしょうか。
また、ワークスペースにOutportブロックから値を送る時に 例えば、 10×1 の行列を 1×10 の行列にする方法が分かりません。
4 Comments
Kei Otsuka
on 9 Nov 2017
simOutはシミュレーション結果が含まれるオブジェクトですね。
行列bが1x101、cが201x1の場合、 行列積なので片方だけ転置してもエラーになります。b、c双方転置すれば計算はできますが、それがT Sさんが期待されている結果かどうかは判断できません。
b = randi(100,1,101);
c = randi(100,201,1);
a = b*c; %エラー
a = b'*c'; %これはOK
try,catch構文等を使ってエラー発生時の値を正確に把握してみては如何でしょうか。
Accepted Answer
Kei Otsuka
on 11 Nov 2017
当初の質問から若干逸れてきていると思いますので、一旦整理しますね。
・質問
以下のように、for文を使って行列bの要素数分だけループを回した時にエラーになる。
for i=1:length(b)
c = c(i,1)
end
・回答
初回のループ実行時に c の要素数は必ず1になってしまいますので、 2回目以降のループでインデックスが2以上になった場合、エラーとなります。行列 c から一時的に要素を抽出して演算したい場合は別の変数定義して使ってみてください。
0 Comments
More Answers (0)
See Also
Categories
Find more on Sinks in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!