zerosを使用して​型変換すると、メモリ​割り当てエラーが発生​する。

6 ビュー (過去 30 日間)
Ayumi Oshima
Ayumi Oshima 2020 年 6 月 12 日
コメント済み: Ayumi Oshima 2020 年 6 月 12 日
matlab functionにて、リングバッファモデルを作成しています。
入力と出力はinport,outportを使用しています。モデル全体の画像を載せます。
コードは以下のように書きました。
function y = fcn(a,b,c,d)
assert(b<100);
persistent A
if isempty(A)
A = zeros(b,1);
end
if c
A = circshift(A,1);
A(1,1) = 0;
else
if d
A = circshift(A,1);
A(1,1) = a;
end
end
y = A; %出力
end
上記のコードを用い、再生ボタンを押したところ、無事に動作しました。
その後、出力の型をdouble型ではなくuint16型にしたいと考え、
A = zeros(b,1,'uint16');としたところ、以下のエラーが発生しました。
シミュレーションの実行中にエラーが発生したため、シミュレーションを終了しました
原因:
メモリ割り当てエラー
uint16に変換しただけであるのに、メモリ割り当てエラーが発生したので驚いています。
どのようにコードを修正すれば、メモリ割り当てエラーが発生せずに使用できるのでしょうか。
  1 件のコメント
Ayumi Oshima
Ayumi Oshima 2020 年 6 月 12 日
入力変数a,bと出力変数yの最大・出力部分を空白にしたところ、エラーなく動きました。
もともとはuint16の設定どおりに、最小:0、最大:65535としていました。

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

回答 (0 件)

カテゴリ

Help Center および File ExchangeConvert Image Type についてさらに検索

Community Treasure Hunt

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

Start Hunting!