最近项目有个通用需求,就是在执行过程中load一个mat格式的文件,然后把这个文件中的数据进行处理。问题在于load之后,我们并不知道文件内变量的名字,这样就会造成一个很棘手的错误:执行以下代码,
数据已经load,我按照自己的记忆去访问该数据,结果因为我记错了,导致提示说该变量不存在,如果所示:
原因是变量的真实名称是dat
于是我想到了给他赋一个名字不就好了吗?真实机智如我,如下操作:
但是,但是,但是,事与愿违,还是出现错误了。怎么会超出维度呢,明明数据的是几万乘以几十的二维矩阵呢,为什么呢?怎么是个结构体:
为什么呢?原来通过上面的程序读进来的赋值之后,得到的a是个结构体:
我要是想访问里面的数据,还是得要知道变量的名字才可以。可是我不知道啊!怎么办?
不磨叽,说方法!
使用的是matlab自带的函数fieldnames和getfield。下面的贴图是执行代码的截图:
通过封装成函数的形式,在参数传入方面与原来具有相同的使用方法,都是传入待读文件的路径。但是经过修改之后,函数会返回读到的数据,并且,变量的名字随你定,具有很强的实用性。