我有一些与某个比我更有经验的人一起编写的MatLab代码前几天,代码运行得非常好。当我今天尝试运行它时,我得到了错误“这种类型的变量不支持点索引”,并且我已经尝试阅读了关于这个主题的许多其他堆栈溢出问题,但仍然在努力解决我的问题。我将包括代码,直到下面的错误。根据我所读到的,这可能与结构有关?如果你能给我送来任何帮助或提示,我将不胜感激。谢谢!
for j = 3:length(files)
files(j).name
folder_name = files(j).folder;
file2load = strcat(folder_name, '\', files(j).name);
data_input = load(file2load);
trace_names = fieldnames(data_input);
for i = 1:length(trace_names)
data_to_plot.x = data_input.(char(trace_names(i))).data.x;
data_to_plot.y = data_input.(char(trace_names(i))).data.y;
1条答案
按热度按时间m1m5dgzv1#
正如评论指出的那样,尚不清楚为什么会出现这个错误,但我可以告诉你是什么导致了这个错误。“点索引”是一种访问名为
struct
的MatLab变量中数据字段的方法。在您的代码段中,files(j)
不是struct
。例如,您不能这样做:
但是,如果将
s
变成struct
,则可以:我猜想这段代码是函数的一部分,其中
files
是一个参数,或者是先前定义了files
的脚本的最后一行。可能有一天和您的同事一起,您将files
设置为一个变量,该变量实际上是一个结构数组,其中包含name
等项。从那时起,一些东西将files
的值更改为非结构类型的数组。