1

384 x 276 x 20 x 5の4D画像データがあります。ここdata(X,Y,T,V)X = x location、、、、、。Y = y locationT = timeV = vessel location

データが信号のパターンを取得し、しきい値の値を設定するために、時間の経過に伴う平均値と時間の経過に伴う最大値が必要です。私はループでそれを行うので、たとえばdata(1,1,:,1)、時間の経過に伴うそのポイントの平均値を取得できます。

試しmean(data(X,Y,:,V))ましmean(squeeze(data(X,Y,:,V)))たが、「添え字インデックスは実数の正の整数または論理値である必要があります」というエラーが表示されます。

どこでも検索しますが、平均値の例は2Dと1Dのみです。時間の経過に伴うデータの平均/最大値を取得したい場合、データはdata(X,Y,:,V)3Dデータになります。

これを行う方法についてのヘルプやアイデアはありますか?

4

3 に答える 3

3

2 番目のパラメーターとしてMEAN関数に渡すことで、平均を求める次元を指定できます。次に、 SQUEEZE関数を使用して 1 次元を削除し、3 次元行列を取得できます。

meanData = squeeze(mean(data,3));

同じ手順に従って、MAX[]関数を使用して最大値を見つけることができますが、操作するディメンションを指定する前に、空のパラメーターを追加する必要があります。

maxData = squeeze(max(data,[],3));
于 2011-07-22T13:41:23.270 に答える
1

問題を分析するには、次のエラー メッセージから始めます。それが何を意味するか分かりますか?そうでない場合、意味がわからない単語が含まれていますか? ドキュメントでそれらについて読むことができますか? エラーメッセージ全体をグーグルで検索できますか?

この背後にある理由は、MATLAB が 384 x 276 x 20 x 5 の配列の要素にアクセスする方法を理解する必要があるためです。あなたの問題は手段や最大値を取ることとは何の関係もないので、それらの用語を検索しても役に立ちませんでした。

入力するとき

data(X,Y,T,V)

X、Y、T、V は整数 (または整数のベクトル) である必要があります。つまり、X は 1:384 の範囲内にある必要があります。例えば、

mean(data(1,1,:,1))

最初の X、Y、および V ポイントの時間平均が得られます。

そうは言っても、あなたはループを使うと言っていました...何を見てください

mean(data,3)

max(data,[],3)

do ...問題を正しく理解していれば、これでループが完全に置き換えられます。

于 2011-07-22T13:40:32.813 に答える
1

mean(data,3)max(data,[],3)

于 2011-07-22T13:45:08.887 に答える