运行 matlab 代码时出现错误。在这里,我尝试使用以前代码的输出之一作为新代码的输入。
??? Reference to non-existent field 'y1'.
谁能帮我?
运行 matlab 代码时出现错误。在这里,我尝试使用以前代码的输出之一作为新代码的输入。
??? Reference to non-existent field 'y1'.
谁能帮我?
一个好的做法可能是在访问之前检查该字段是否存在:
if isfield( s, 'y1' )
% s.y1 exists - you may access it
s.y1
else
% s.y1 does not exist - what are you going to do about it?
end
考虑到 Edric 的评论,另一种可能的方式是
try
% access y1
s.y1
catch em
% verify that the error indeed stems from non-existant field
if strcmp(em.identifier, 'MATLAB:nonExistentField')
fprintf(1, 'field y1 does not exist...\n');
else
throw( em ); % different error - handle by caller?
end
end
您是否使用命令load从文件中加载数据?如果是,则此函数会覆盖您当前的变量,因此,它们将不存在,因此当您调用时,它而不是使用:
load ('filename');
利用:
f=load ('filename');
现在,要引用加载文件中的任何变量,请使用 f.varname,例如,如果在加载的数据中保存了一个名为 net 的网络,您可以像这样使用它:
a = f.net(fv);
我会先说明我的情况,然后给出解决方案。
op
,它是一个struct,它的名字是coef.mat
;coef = load( file_path, '-mat')
我使用;加载这个变量coef
作为参数传递给它,在这里,弹出错误引用不存在的字段。我的解决方案:
coef
为coef.op
,然后将其传递给函数,它将起作用。所以,我认为背后的原因是:struct被保存为变量,当你使用load
并想要访问origin变量时,你需要直接使用操作指出它dot(.)
,你可以直接在Matlab工作区打开变量并找出它包含在变量中的内容。
在您的情况下,如果您之前代码的输出是一个结构(这是我的猜测,但您没有指出)并且您将其保存为MyStruct
,则将其加载为MyInput = load(MyStruct)
,然后将其用作函数的参数时,它应该是 MyInput.y1
。
啤酒花它会工作!
首先将其加载到命令窗口并观察工作区窗口。您可以看到结构名称。它将通过访问结构名称来工作。例子:
lm=load('data.mat');
disp(lm.SAMPLE.X);
这里 SAMPLE 是结构名称,X 是结构的成员