フィルターのクリア

「インデックスが配列​要素数を超えています​。」とエラーが出ます​。

366 ビュー (過去 30 日間)
大輝
大輝 2023 年 3 月 10 日
コメント済み: Norihiro Kobayashi 2024 年 6 月 13 日
Simscapeでプラントモデリングの接続を行なっていました。
solidworksからインポートしたアセンブリ同士を合体させたところ「インデックスが配列要素数を超えています。」とエラーが表示されました。
原因をご教授願います。
  1 件のコメント
Norihiro Kobayashi
Norihiro Kobayashi 2024 年 6 月 13 日
こんにちは、アセンブリを合体させて発生しているという背景から、SolidWorksから取り込まれた変数名が重複してしまい、いずれかの変数が小さい配列で上書きされたために、発生しているエラーではないかと想像しています。
SolidWorksから変数を取り込む際の変数の命名に関しては、smimportコマンドで一部設定が可能ですので、simimportで改めて取り込む方法で良ければ、対応は可能かもしれません。
smimport('xxx.xml','VariableName','custom_Var_name')
以上参考になりましたら

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

回答 (1 件)

Hernia Baby
Hernia Baby 2023 年 3 月 12 日
おそらく入出力の要素数(サイズ)があってません。
MATLABでのエラーでいうとこんな感じです。
a = zeros(1,10)
a = 1×10
0 0 0 0 0 0 0 0 0 0
size(a)
ans = 1×2
1 10
a(11)
Index exceeds the number of array elements. Index must not exceed 10.
サイズが10こまでなのに11番目なんかないぞ。
つまりインデックス(11)が要素数(10)を超えているぞって言ってます。
-----
デバッグ > 診断 > 情報のオーバーレイ > 信号 > 信号の次元
で次元数を表示してみてください。
もしくはDisplayブロックで確認するのもありです。
  2 件のコメント
大輝
大輝 2023 年 3 月 13 日
ご回答ありがとうございます。
次元数を確認したところ合っていないところがありました。
solidworksからインポートしたアセンブリ同士を合体させた際に参照先が混ざってしまうようなのですが,解決方法ご存じでしょうか。
Rigid Transformの値「smiData.RigidTransform(22).translation」が合体させたいアセンブリの二つにあるような状態です。
Hernia Baby
Hernia Baby 2023 年 3 月 16 日
信号がわかるのであればBus等で束ねたりするのはいかがでしょうか?

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

カテゴリ

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

製品


リリース

R2022b

Community Treasure Hunt

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

Start Hunting!