matlab - 在 Matlab 中将结构转换为 double 类型

标签 matlab struct double matlab-struct

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

enter image description here

所以,我尝试使用下面显示的几个代码来转换它。

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

代码给了我一个输出,但它是“complex double”类型。

enter image description here

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

或者将'complex double'转换为'double'类型?

如有任何帮助和建议,我们将不胜感激。谢谢。

最佳答案

首先,您可以使用 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]);

关于matlab - 在 Matlab 中将结构转换为 double 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37440709/

相关文章:

matlab - 以下 MATLAB 代码中单精度格式的应用是什么?

matlab - 如何在 Simulink 中使用方波信号和可变步长的速率限制器?

matlab - 如何在MATLAB中创建具有c个固定邻居的n个顶点的随机图?

c - 初始化结构数组 - {NULL} 与 {}

java - 将 .txt 文件中的 double 读取到列表中

MATLAB 定时器在函数内部的行为与在命令窗口中的行为不同

json - Golang Unmarshal slice of slice of ints

C++ 如何让一个类依赖于一个命名空间,而那个命名空间又依赖于该类?

java - JDBC - 双值未显示在 MySQL 数据库中

Java - 对多维双数组进行排序