要素数は足りてるはず​なのに「行列のインデ​ックスは削除の範囲外​です。」のエラーが出​る。

24 visualizaciones (últimos 30 días)
mayu
mayu el 29 de Mzo. de 2023
Comentada: mayu el 5 de Abr. de 2023
MATLABのApp Designerを使用しています。
i2cボードの変数の配列と、アドレス情報の配列を作成していて、アドレス情報をボードに入れようとしています。
以下のコードで、forループで4回目までは入っていくのですが、5回目(num = 5)の時に、
BoardAll(num)= [];の部分で、
「行列のインデックスは削除の範囲外です。」
のエラーが出ます。
BoardAll(num)の要素数はnumelで8個となっているので、5回目のループでエラーになる理由がわかりませんでした😓
properties (Access = private)
abc1,
abc2,
def1,
def2,
def3,
ghi1,
ghi2,
ghi3,
end
▼コールバック関数内
BoardAll = {app.abc1,app.abc2,app.def1,app.def2,app.def3,app.ghi1,app.ghi2,app.ghi3};
PrepI2c = {'0x10','0x11','0x12','0x40','0x41','0x42','0x60','0x61'};
for num = 1:numel(BoardAll)
BoardAll(num)= [];
BoardAll(num) = PrepI2c(num);
disp(BoardAll(num));
end
原因がわかる方いらっしゃいましたら、ご教示いただけますと幸いです。
お忙しいところすみませんが、どうぞよろしくお願いいたします。

Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 29 de Mzo. de 2023
  12 comentarios
Atsushi Ueno
Atsushi Ueno el 31 de Mzo. de 2023
試していないですが:
おそらくI2C経由で接続するデバイスを示すオブジェクトを重複させる事が出来ないのだと思います。ですからプログラムの作りとしても、アドレスを配列として持っておき、都度オブジェクトを生成してはアクセスする形に変える必要がるのではないかと思います。
PrepI2c = {'0x10','0x11','0x12','0x40','0x41','0x42','0x60','0x61'};
for num = 1:numel(BoardAll)
i2cdevice = i2cdev(mypi,'i2c-1',PrepI2c{num}); % i2cdeviceは保存しない
output2 = readRegister(i2cdevice,0)
end
mayu
mayu el 5 de Abr. de 2023
uenoさま
お礼おそくなりすみません、
分からなかったので、お返事いただいた内容を周りの人にも見てもらってようやく把握できました💦
いつもお忙しいところありがとうございます。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!