在MATLAB中的rmfield函数可以删除结构体变量的字段:
% rmfield函数官方文档的示例
s.a = 1;
s.b = 2;
s.c = 3;
% 删除字段 b
field = 'b';
% 用法1
rmfield(s,field)
isfield(ans,field) % 上一行输出结果的ans不包含b字段!
isfield(s,field)
% 用法2
s = rmfield(s,field)
isfield(s,field)
用法1和用法2的差别在哪里?
用法1不指定输出变量,它使rmfield函数的输出结果返回到ans。后续我们用isfield函数查看ans是否有b字段,结果ans果真没有b字段,然而我们真正想要把s变量的b字段移除,
用isfield函数查看s是否有b字段,结果是s依然保持该字段,这说明用法1中rmfield函数根本没有对s起作用!!!
然而用法2是将 rmfield函数的输出结果返回到原结构体s中,这样rmfield函数才对s起作用
以上一个简单的例子看起来用法1和用法2无差别,但是它们的结果不同,再看参考文档,该函数的用法只有用法2,因此提示我们需要保持严谨