使用新版MATLAB(R2020A/B),在双击或右键打开某些文件夹下的.m文件时会出现以下报错:
MATLAB错误对话框
错误使用open(第136行)
此类型的变量不支持使用点进行索引
为解决这一问题尝试了卸载重装、更换路径、降低版本等方法,其中2018版MATLAB则不会出现此报错,但是治标不治本,本文尝试通过编译调试找到问题所在并解决。注:本文所解决的可能是众多诱因之一,读者可按照本文思路进行尝试。
首先命令行输入open并打开函数找到136行。
第一层报错点在此,原因是openAction调用openm.m函数时出错,为此打开该函数,方法同上。
通过调试,发现第二层报错点在edit函数内,直接调试步入, 找到shouldUseBuiltinEditor变量并右键打开。
将第17行修改为 s = matlab.settings.internal.settings。而原本代码为s = settings。此时问题便可解决。
那么为什么会出现这一问题呢?
通过对比18版和20版shouldUseBuiltinEditor变量复制方式,发现20版将s = matlab.settings.internal.settings单封装成一个函数,即settings。此时如果在MATLAB的索引路径下添加过自己写的重名函数,则容易优先调用,从而出现变量赋值类型的报错。而18版起到同样作用的isUsingBuiltinEditor函数中,则是直接赋值,也就不会出现本文的问题。
所以,非必要情况下,尽量避免用MATLAB已有函数名命名自写函数。当然,在MATLAB在版本更新时会增加不少新函数,因此重名问题不可避免,如果出现类似报错,可以考虑查找这一情况。