我对MATLAB很新。我有一个输出struct
的函数。我从没有字段的struct
开始,然后在浏览整个文本文件时添加字段。
以下是我的一些代码:
tline = fgetl(fid);
test = struct;
name = 'ignore';
curr = [];
while ischar(tline)
...
test.(name) = curr;
...
tline = fgetl(fid);
end
name
和curr
多次更改,但name
始终为字符串,curr
始终为数组。由于行"Argument to dynamic structure reference must evaluate to a valid field name."
test.(name) = curr;
我在命令行中尝试了相同的代码,它工作正常。我真的不确定它为什么不起作用。在此先感谢您的帮助!
答案 0 :(得分:0)
您可以尝试使用eval
来评估特定的感兴趣的行。 eval
将要做的是它接受一个字符串并实际评估该字符串在MATLAB命令提示符中的含义。例如,如果您在命令提示符中键入s = 1:5
,则可以使用eval
:eval('s = 1:5');
执行相同的操作。这是非常无害的,但如果你想创建一个命令,你有一堆经常动态变化的字符串,那么eval
就很棒了。
此外,(name)
周围的括号没有任何意义。看起来你正试图在你不在的时候调用一个函数。
因此,请尝试这样做:
tline = fgetl(fid);
test = struct;
name = 'ignore';
curr = [];
while ischar(tline)
...
str = ['test.' name ' = curr;'];
eval(str);
...
tline = fgetl(fid);
end
此代码将执行的操作是,它会将name
中找到的字符串指定的字段添加到struct
,并将为此字段分配存储在curr
中的数组
应该有希望这样做!