2016-05-25 73 views
0

Glcm(特徵提取方法)給出'struct'類型的輸出,而我需要'double'類型的輸出。我需要一個'double'類型作爲下一步的輸入變量。在Matlab中將結構轉換爲雙精度型

enter image description here

所以,我已經嘗試過使用以下幾個代碼顯示轉換。

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

該代碼給了我一個輸出,但它是'複雜的雙'類型。

enter image description here

是否有更好的方法來轉換「結構」到「雙」類型?

或者將'complex double'轉換爲'double'類型?

任何幫助和建議將不勝感激。謝謝。

+0

有關使用'struct2array'如何? – Suever

回答

4

首先,不是先轉換爲單元格然後轉換爲矩陣,可以使用struct2array直接從struct轉換爲double

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

感謝您的解釋@Suever 令人驚訝的是,它非常簡單。 –

+0

但是等待@Suever,矩陣發生了什麼,它給出值= 1x3222 double,它應該是22x601(字段x總數據)。看看上面分享的變量的圖片。 它必須是精確的,因爲我需要將它用於使用人工神經網絡的訓練。 希望你能幫上忙。 謝謝。 –

+0

@AnaAin請參閱更新的答案 – Suever