インデックスの配列範囲を超えているときの対処方法

現在、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万行近くあるからダメなのでしょうか。
もしダメであれば、解決方法をご教授願います。
どうか知恵をお貸しいただけないでしょうか。よろしくお願いします。

Answers (1)

Hernia Baby
Hernia Baby on 9 Dec 2022

1 vote

頂いたtxtの中を見たのですがn×3のデータになっています。つまり4列目が存在してません。
ですので
logData(:,4)
で4列目がないやんけ!って怒られています。

1 Comment

Atsushi Ueno
Atsushi Ueno on 9 Dec 2022
>位置 2 のインデックスが配列範囲を超えています。インデックスは 3 を超えてはなりません。
エラーの原因は@Hernia Babyさんの回答通りです。質問に記載された上記のエラーも再現しました。
>現在、txtファイルとしてn行4列のファイルがあります。(中略)4列目は2値化した輝度値になります。
なので、単に添付ファイルに4列目の2値化した輝度値データを追加し忘れていると思います。
>テキストファイルが1万行近くの時は作動したのですが、今回は30万行近くあるからダメなのでしょうか。
30万行近くあるからダメではないです。
実際に動かして確認してみましたが、色情報が無い状態で何やら表示されました。

Sign in to comment.

Categories

Products

Asked:

on 9 Dec 2022

Commented:

on 9 Dec 2022

Community Treasure Hunt

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

Start Hunting!