如何将MATLAB中所有结构域的数据类型转换为double?

如何将MATLAB中所有结构域的数据类型转换为double?

问题描述:

我在MATLAB一个结构称为MYSTRUCT如何将MATLAB中所有结构域的数据类型转换为double?

它有以下类以下字段:

Field Class 
a  single 
b  single 
c  double 

我想转换MYSTRUCT的各个领域类双,但是当我尝试时:

double(mystruct) 

我从MATLAB输出如下:

??? Error using ==> double 
Conversion to double from struct is not possible. 

Futhermore,我给MYSTRUCT作为只是一个例子。我意识到我可以单独手动投射每个字段,因为在这个例子中只有3个字段。我想知道如何做这个转换为任何结构在matlab中有很多字段和子字段。

您可以使用structfun为:

mystruct = structfun(@double, mystruct, 'uniformoutput', 0); 

对于标量结构(numel(mystruct)为1),路易斯·Mendo的答案很可能是最好的解决办法。对于其他结构使用此代码:

cell2struct(cellfun(@double,struct2cell(mystruct),'uni',false),fieldnames(mystruct),1) 

它将结构转换为单元格,然后将每个元素转换为double并转换回结构。

+0

好泛化! – 2015-03-24 23:27:59