0

現在、このエラーで問題が発生しています。コードのこのセクションを追加する前はすべて問題ありませんでした

    a=squeeze(b(x1,y1,z1,:));
    a_min = min(a);
    a_max = max(a);
    if a_max == 0 continue, end;
    a = (a - a_min)/a_max;

これを追加した後、問題が発生し、このエラーがポップアップし始めました。"a" は、負の値から 2.2 までの範囲の 156x1 行列です。「a」からの数値は、HSV カラーマップの値部分の数値を変更するために使用されます。

b は最後の部分が時間値である 4 次元行列で、x1、y1、z1 はポイントの 3 次元座標です。

4

2 に答える 2

1

インデックスを使用する唯一の場所はb(x1,y1,z1,;)呼び出しです。

これらが整数値であることを確認してください:

b(round(x1),round(y1),round(z1),:)

座標が小数の場合。

于 2013-08-14T18:53:31.503 に答える
1

x1,y1andz1はすべて正で整数ですか? エラーから判断すると、これは問題です。負の数は、matlab/octave の行列のインデックスとして使用できません。

このコードが機能するかどうかを確認できます

a=squeeze(b(abs(round(x1)),abs(round(y1)),abs(round(z1)),:));
a_min = min(a);
a_max = max(a);
if a_max == 0 continue, end;
a = (a - a_min)/a_max;

エラーがない場合、問題は確かにx1,y1,z1値にあるため、コードの残りの部分を調べてバグを見つける必要があります。

于 2013-08-14T18:50:17.190 に答える