Matlab:如何重命名子字段

时间:2014-04-01 22:17:18

标签: matlab

让我用这种方式描述问题。我有一个.mat文件,如果我打开它,它包含1x10结构数据。在每个数据中,它有一个名为res的1x5结构(或字段)。在res中,它有一个1x1结构(或字段)调用,让我们说,foo。因此,我有ixj数据副本(i).res(j).foo。

无论如何我可以改变这个foo的名字吗?说我希望所有数据(i).res(j).foo成为数据(i).res(j).bar

我在互联网上搜索过,并试过几种方法(添加字段和删除,创建临时字段,使用cell2field或fieldtofile等),但所有这些方法都不起作用。最常见的返回错误是"不同结构之间的订阅分配。"

请提前帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

最安全的方法可能是循环数据两次,第一次为每个子字段创建一个新的字段栏,如data(i).res(j).bar=data(i).res(j).foo,然后第二次传递删除像data(i).res(j) = rmfield(data(i).res(j),'foo')这样的旧字段。

答案 1 :(得分:1)

谢谢caoy和NotLikeThat。我终于得出了结论。

data2 = data
for i=1:10
    for j = 1:5
        data(i).res(j).bar = data2(i).res(j).foo;
    end
    data(i).res = rmfield(data(i).res, 'foo');
end

运行此脚本后,我可能需要删除i,j和data2。