我在 matlab 中有一个名为mystruct的结构
它具有以下字段和以下类:
Field Class
a single
b single
c double
Run Code Online (Sandbox Code Playgroud)
我想将mystruct 的所有字段转换为 class double,但是当我尝试时:
double(mystruct)
Run Code Online (Sandbox Code Playgroud)
我从 MATLAB 得到以下输出:
??? Error using ==> double
Conversion to double from struct is not possible.
Run Code Online (Sandbox Code Playgroud)
此外,我仅以 mystruct为例。我意识到我可以手动单独投射每个字段,因为在这个例子中只有 3 个字段。我想知道如何将此转换为具有许多字段和子字段的 matlab 中的任何结构的两倍。
对于标量结构(numel(mystruct)是 1),Luis Mendo 的答案可能是最好的解决方案。对于其他结构,请使用以下代码:
cell2struct(cellfun(@double,struct2cell(mystruct),'uni',false),fieldnames(mystruct),1)
Run Code Online (Sandbox Code Playgroud)
它将结构体转换为单元格,然后将每个元素转换为双精度并转换回结构体。