2

Glcm(特征提取方法)给我一个'struct'类型的输出,而我需要'double'类型的输出。我需要一个“双”类型作为下一步的输入变量。

在此处输入图像描述

因此,我尝试使用下面显示的几个代码对其进行转换。

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

该代码给了我一个输出,但它是“复双”类型。

在此处输入图像描述

有没有更好的方法将 'struct' 转换为 'double' 类型?

或者将“复双”转换为“双”类型?

任何帮助和建议将不胜感激。谢谢你。

4

1 回答 1

6

首先,您可以直接从 a 转换struct为 a doubleusing ,而不是先转换为单元格然后再转换为矩阵struct2array

fetrain = struct2array(gl);

除此之外,“复杂double”和double. 它们都是 type 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 回答