次元のサイズ不一致エラー

40 Ansichten (letzte 30 Tage)
kouji arai
kouji arai am 23 Jan. 2020
Kommentiert: kouji arai am 24 Jan. 2020
R2019bのSimulinkにて、正規分布で配列を生成し、ヒストグラムを作成して各Binの左edgeを1行目、Binのカウント数を2行目とするMATLAB Functionを作成したのですが、下記の通りエラーメッセージが表示されてしまいます。
  • 次元のサイズ不一致エラー 2:1 が必要ですが実際のサイズは 16 です。 Error in 'BatReuseBusiness/NormalDistribution/MATLAB Function' (line 8) Array = [edges(1:end-1);N];
作成したコードは下記の通りです。
function Array = fcn(Quantity,mu,sigma,BinWid)
rng('shuffle')
pd = normrnd(mu,sigma,[1,Quantity])
[N,edges] = histcounts(pd,'BinWidth',BinWid)
Array = [edges(1:end-1);N];
テスト段階で同様のコード下記の通り.mファイル作成、実行した際は問題なく動作していたため、Simulinkにおける設定の問題かと考えているのですが、どなたか対処法をご教示頂けませんでしょうか。
Quantity = 10000
rng('shuffle')
pd = normrnd(10000,1000,[1,Quantity])
histogram(pd,'BinWidth',500)
[N,edges] = histcounts(pd,'BinWidth',500)
Array = [edges(1:end-1);N]

Akzeptierte Antwort

stozaki
stozaki am 23 Jan. 2020
Bearbeitet: stozaki am 23 Jan. 2020
問題は解決されましたでしょうか?
エラーの原因は恐らく、MATLAB Functionブロックの入出力の信号属性の設定が不足しているものと考えられます。今回の場合ですとArrayという出力変数の次元が可変であると思われますので、信号属性は可変とし、サイズには最大次元を設定します。
Simulinkでは、変数(信号) の属性を明示的に設定しないと、既定の属性で動くことになってしまいます。出力変数の次元は既定では固定次元となっており、エラーが発生したと思われます。
私の手元で、arai様同様のエラーを再現後、エラーが発生しないような設定を行ったモデルをR2019bで作成し添付しました。こちらでエラーは消えると思いますので、必要に応じてその他の信号属性を設定して頂けますでしょうか?
これらの設定に関するドキュメントは下記リンク先を参照してください。
  1 Kommentar
kouji arai
kouji arai am 24 Jan. 2020
stozaki様
解決方法をご教示いただきましてありがとうございます。
添付いただいたモデルを参考に自分のモデルでも設定を変更したところ、問題なく動作することを確認できました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu 対話型のモデル編集 finden Sie in Help Center und File Exchange

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!