インデックスの配列範囲を超えているときの対処方法
63 ビュー (過去 30 日間)
古いコメントを表示
現在、txtファイルとしてn行4列のファイルがあります。
1列目からx、y、zの座標になっており、4列目は2値化した輝度値になります。
このファイルを読み込んで、3次元的に図形を確認します。
logData = readmatrix('平面No.2再 1.txt');
cData = repmat(logData(:,4) ./ 255, 1, 3); % 255:白 0:黒
s = scatter3(logData(:,1), logData(:,2), logData(:,3), 'CData', cData, 'Marker', '.', 'MarkerEdgeColor', 'flat');
上記のシステムを適用すると以下のようなエラーメッセージが表示されます。
位置 2 のインデックスが配列範囲を超えています。インデックスは 3 を超えてはなりません。
テキストファイルが1万行近くの時は作動したのですが、今回は30万行近くあるからダメなのでしょうか。
もしダメであれば、解決方法をご教授願います。
どうか知恵をお貸しいただけないでしょうか。よろしくお願いします。
0 件のコメント
回答 (1 件)
Hernia Baby
2022 年 12 月 9 日
頂いたtxtの中を見たのですがn×3のデータになっています。つまり4列目が存在してません。
ですので
logData(:,4)
で4列目がないやんけ!って怒られています。
1 件のコメント
Atsushi Ueno
2022 年 12 月 9 日
>位置 2 のインデックスが配列範囲を超えています。インデックスは 3 を超えてはなりません。
>現在、txtファイルとしてn行4列のファイルがあります。(中略)4列目は2値化した輝度値になります。
なので、単に添付ファイルに4列目の2値化した輝度値データを追加し忘れていると思います。
>テキストファイルが1万行近くの時は作動したのですが、今回は30万行近くあるからダメなのでしょうか。
30万行近くあるからダメではないです。
実際に動かして確認してみましたが、色情報が無い状態で何やら表示されました。

参考
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!