如何将MATLAB中struct的所有字段的数据类型转换为double?

时间:2015-03-24 23:02:22

标签: matlab

我在matlab中有一个结构名为 mystruct

它包含以下类别的字段:

Field    Class
a       single
b       single
c       double

我想将 mystruct 的所有字段转换为类 double ,但是当我尝试时:

double(mystruct)

我从MATLAB得到以下输出:

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

此外,我将 mystruct 作为一个例子。我意识到我可以手动单独转换每个字段,因为在这个例子中只有3个字段。我想知道如何在matlab中使用许多字段和子字段将此转换为 double

2 个答案:

答案 0 :(得分:4)

您可以使用structfun

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

答案 1 :(得分:4)

对于标量结构(numel(mystruct)是1),Luis Mendo的答案可能是最好的解决方案。对于其他结构,请使用以下代码:

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

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