如何将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中有很多字段和子字段。
答
对于标量结构(numel(mystruct)
为1),路易斯·Mendo的答案很可能是最好的解决办法。对于其他结构使用此代码:
cell2struct(cellfun(@double,struct2cell(mystruct),'uni',false),fieldnames(mystruct),1)
它将结构转换为单元格,然后将每个元素转换为double并转换回结构。
好泛化! – 2015-03-24 23:27:59