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

68 ビュー (過去 30 日間)
kouji arai
kouji arai 2020 年 1 月 23 日
コメント済み: kouji arai 2020 年 1 月 24 日
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]

採用された回答

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

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSources についてさらに検索

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!