2

Glcm (特徴抽出法) は「struct」タイプの出力を提供しますが、「double」タイプの出力が必要です。次のステップの入力変数として「double」型が必要です。

ここに画像の説明を入力

そこで、以下に示すいくつかのコードを使用して変換しようとしました。

[gl] = glcm (B);
[gl] = struct2cell (gl);
[gl] = cell2mat (gl);
[fetrain] = double (gl);

コードは私に出力を与えますが、それは「複雑な倍精度」タイプです。

ここに画像の説明を入力

「struct」を「double」型に変換するより良い方法はありますか?

または、「複雑な double」を「double」型に変換するには?

どんな助けや提案も大歓迎です。ありがとうございました。

4

1 に答える 1

6

まず、最初にセルに変換してから行列に変換するのではなく、 を使用して から に直接変換structできdoubleますstruct2array

fetrain = struct2array(gl);

doubleそれはさておき、「複合体」と の間に違いはありませんdouble。どちらもタイプdoubleです。

class(1i)
% double

real複素数の実数成分を取得するために、またはabsその大きさが必要な場合に使用できます。

real(1+1i)
%   1

abs(1+1i)
%   1.4142

あなたの場合、これは次のようになります。

fetrain_real = real(fetrain);
fetrain_mag = abs(fetrain);

アップデート

デフォルトstruct2arrayでは、データを水平方向に連結します。データを の行列にしたい場合はnFields x nData、次のようにすることができます。

fetrain = struct2array(gl);

% Reshape to be nFields x nData
fetrain = permute(reshape(fetrain, [], numel(fieldnames(gl)), numel(gl)), [2 1 3]);
于 2016-05-25T15:06:27.897 に答える