我在Matlab中运行一些脚本,很长一段时间都很好 . 昨天似乎访问使用 xxx.fields
的结构的字段名称停止工作,这里显示了一个简化的示例代码
a.b.one = 1;
a.b.two = 2;
a.b.three = 3;
all_fields = fieldnames(a.b); % This works
all_fields = a.b.fields; % This used to work, it suddenly stopped working.
错误消息是 'Reference to non-existent field 'fields'.' ,而在某些计算机上 all_fields = a.b.fields;
仍然有效 .
我有几台机器有不同版本的Matlab(从2014a到2016a) . 这些代码几天前用于顺利运行,自去年以来没有人更改过该脚本 . 我们没有手动将任何更新/补丁应用于Matlab . matlab有一些自动更新功能吗?
使用 filednames
对我们有用,但它需要对我们现有的代码库进行大量的重写 .
任何帮助,将不胜感激 . 谢谢 .
1 回答
让我们停止谈论这个问题,它与MCVE无关 . 我在问题中发布的示例足以重现问题 .
对于
a.b.fields;
行,有些matlab实例可以正常工作,有些则不行 . 如果all_fields = a.b.fields;
适合您,那么您可能没问题 . 为了使脚本适用于每个人,我们只需要将所有all_fields = a.b.fields;
更改为all_fields = fieldnames(a.b);
,并添加某些条件 .我只是为什么它在某些计算机上工作而感到困惑,但它在其他计算机上不起作用 . 如果这是一些深层次的Matlab引擎的东西,那么让我们关闭这个问题 . 谢谢你们的评论 .