"Dot indexing is not supported for variables of this type"运行良好的代码吗?



我有一些MATLAB代码,我和一个在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;

正如评论所指出的,不清楚为什么会出现这个错误,但我可以告诉你是什么原因导致的。"点索引"是访问一种称为struct的Matlab变量中的数据字段的一种方式。在您的代码段中,files(j)不是struct

例如,您不能这样做:

>> s = {}; % s is a cell array (not a struct)
>> g = {};
>> g{1} = 'lala';
>> s{1} = g;
>> s.g % cannot access g using this syntax
Dot indexing is not supported for variables of this type.

但如果你把s变成struct,你可以:

>> s = struct
s = 
struct with no fields.
>> s.item1 = g; % create a field called item1 to hold the stuff in g
>> s.item1 % now you can use dot indexing to access the stuff you put in there
ans =
1×1 cell array
{'lala'}

我猜这个片段是files是一个参数的函数的一部分,或者是前面定义了files的脚本的一行。可能在前几天和同事一起,您将files设置为一个变量,该变量实际上是一个结构数组,其中包含项目name等。从那时起,有东西将files的值更改为非结构类型的数组。

相关内容

  • 没有找到相关文章

最新更新