要素数は足りてるはずなのに「行列のインデックスは削除の範囲外です。」のエラーが出る。
조회 수: 30 (최근 30일)
이전 댓글 표시
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
原因がわかる方いらっしゃいましたら、ご教示いただけますと幸いです。
お忙しいところすみませんが、どうぞよろしくお願いいたします。
댓글 수: 0
채택된 답변
Atsushi Ueno
2023년 3월 29일
댓글 수: 12
Atsushi Ueno
2023년 3월 31일
試していないですが:
おそらく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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!