2016-05-25 5 views
0

Glcm(特徴抽出方法)は、 'struct'型の出力を与えますが、出力は 'double'型でなければなりません。私は次のステップの入力変数として 'double'型が必要です。構造体をMatlabのdouble型に変換する

enter image description here

だから、私はいくつかのコードの下示したを使用して、それを変換しようとしました。

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

コードは出力を与えますが、「複合ダブル」タイプです。

enter image description here

「ダブル」タイプの「構造体」を変換する良い方法はありますか?

または '複合ダブル'を 'ダブル'タイプに変換しますか?

ご協力いただきありがとうございます。ありがとうございました。

+0

'struct2array'の使い方はどうですか? – Suever

答えて

4

最初にセルに変換してからマトリックスに変換するのではなく、struct2arrayを使用してstructからdoubleに直接変換できます。さておき、「複雑double」とdoubleの間に違いはありません

fetrain = struct2array(gl); 

。それらは両方ともタイプdoubleです。

class(1i) 
% double 

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

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]); 
+0

説明をありがとう@Suever 驚くほど簡単です。 –

+0

しかし、@ Sueverを待って、マトリックスで何が起こるかは、値= 1x3222を二重にします。これは22x601(フィールドx合計データ)とみなされます。私が上で共有した変数の画像を見てください。 私はArtificial Neural Networkを使ったトレーニングに使用する必要があるので、正確でなければなりません。 お手数ですが、 ありがとうございます。 –

+0

@AnaAin答えを更新する – Suever

関連する問題