Matlab 动态结构参考,添加字段时出错
我对MATLAB相当陌生。我有一个函数,它输出一个Matlab 动态结构参考,添加字段时出错,matlab,dynamic,struct,field,Matlab,Dynamic,Struct,Field,我对MATLAB相当陌生。我有一个函数,它输出一个结构。我从一个没有字段的struct开始,然后在浏览整个文本文件时添加字段 以下是我的一些代码: tline = fgetl(fid); test = struct; name = 'ignore'; curr = []; while ischar(tline) ... test.(name) = curr; ... tline = fgetl(fid); end name和curr多次更改,但name始终是字符
结构
。我从一个没有字段的struct
开始,然后在浏览整个文本文件时添加字段
以下是我的一些代码:
tline = fgetl(fid);
test = struct;
name = 'ignore';
curr = [];
while ischar(tline)
...
test.(name) = curr;
...
tline = fgetl(fid);
end
name
和curr
多次更改,但name
始终是字符串,curr
始终是数组。我得到一个错误“动态结构引用的参数必须计算为有效的字段名。”
,因为行test.(name)=curr代码>
我在命令行中尝试了相同的代码,效果很好。我真的不确定为什么它不起作用。提前感谢您的帮助 您可以尝试使用eval
来评估特定的兴趣行。eval
将做的是,它获取一个字符串,并实际计算MATLAB命令提示符中该字符串的内容。例如,如果在命令提示符下键入s=1:5
,则可以对eval
执行相同的操作:eval('s=1:5')代码>。这是非常无害的,但是如果您想要创建一个命令,其中有一组经常动态更改的字符串,那么eval
非常好
另外,(名称)
周围的括号没有任何意义。看起来你正在尝试调用一个函数,而实际上你没有
因此,请尝试这样做:
tline = fgetl(fid);
test = struct;
name = 'ignore';
curr = [];
while ischar(tline)
...
str = ['test.' name ' = curr;'];
eval(str);
...
tline = fgetl(fid);
end
此代码将要做的是,它将使用name
中的字符串指定的字段添加到struct
,并使用存储在curr
中的数组分配此字段
希望能做到 当代码失败时,了解name
是什么会很有趣。如果出现错误,可以将以下内容添加到脚本dbstop中,然后将其释放。出现错误时,调试器将在生成错误的行停止。也许在那个迭代中名称值有些奇怪……另外,如果您使用ischar(tline)
来确定您是否在文件末尾,另一种选择是~feof(fid)
(用于文件末尾)。请注意,我能够让您的代码正常运行(从某个文件读取,在while循环的每次迭代中创建不同的字段)。错误消息是否说这是导致问题的行?是否在其他上下文中使用过name
或test
?我可以很容易地使用cos.(34)
生成相同的错误消息。