动态结构参考,错误添加字段

时间:2014-06-05 00:28:25

标签: matlab dynamic struct field

我对MATLAB很新。我有一个输出struct的函数。我从没有字段的struct开始,然后在浏览整个文本文件时添加字段。

以下是我的一些代码:

tline = fgetl(fid);
test = struct;
name = 'ignore';
curr = [];
while ischar(tline)
    ...
    test.(name) = curr;
    ...
    tline = fgetl(fid);
end

namecurr多次更改,但name始终为字符串,curr始终为数组。由于行"Argument to dynamic structure reference must evaluate to a valid field name."

,我收到错误test.(name) = curr;

我在命令行中尝试了相同的代码,它工作正常。我真的不确定它为什么不起作用。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以尝试使用eval来评估特定的感兴趣的行。 eval将要做的是它接受一个字符串并实际评估该字符串在MATLAB命令提示符中的含义。例如,如果您在命令提示符中键入s = 1:5,则可以使用evaleval('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中的数组

应该有希望这样做!