让我用这种方式描述问题。我有一个.mat文件,如果我打开它,它包含1x10结构数据。在每个数据中,它有一个名为res的1x5结构(或字段)。在res中,它有一个1x1结构(或字段)调用,让我们说,foo。因此,我有ixj数据副本(i).res(j).foo。
无论如何我可以改变这个foo的名字吗?说我希望所有数据(i).res(j).foo成为数据(i).res(j).bar
我在互联网上搜索过,并试过几种方法(添加字段和删除,创建临时字段,使用cell2field或fieldtofile等),但所有这些方法都不起作用。最常见的返回错误是"不同结构之间的订阅分配。"
请提前帮助,谢谢!
答案 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。