运行matlab代码时出错。在这里,我尝试使用以前代码的一个输出作为我的新代码的输入。
??? Reference to non-existent field 'y1'.
任何人都可以帮助我吗?
答案 0 :(得分:3)
一个好的做法可能是在访问之前检查字段是否存在:
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
答案 1 :(得分:1)
您是否使用加载命令从文件加载数据? 如果是,这个函数会覆盖你当前的变量,因此,它们变得不存在,所以当你调用时,它不是使用:
load ('filename');
使用:
f=load ('filename');
现在,要引用加载文件中的任何变量,请使用f.varname,for 例如,如果在加载的数据中保存了一个名为net的网络,您可以使用它:
a = f.net(fv);
答案 2 :(得分:0)
我先解释一下我的情况然后给出解决方案。
op
,它是 struct ,其名称为coef.mat
; coef = load( file_path, '-mat')
; coef
作为参数传递给它,此时会弹出错误引用不存在的字段。我的解决方案:
coef
替换为coef.op
,然后将其传递给该函数即可。所以,我认为背后的原因是:当你使用load
并希望访问原始变量时, struct 被保存为变量,您需要使用dot(.)
操作直接指出它,您可以直接在Matlab工作区中打开变量并找出它在变量中包含的内容。
在您的情况下,如果您的以前代码的输出是一个结构(这是我的猜测,但您没有指出)并且您将其保存为{{ 1}},您将其加载为MyStruct
,然后将其用作函数的参数时,它应 MyInput = load(MyStruct)
。
啤酒花它会起作用!
答案 3 :(得分:0)
首先将其加载到命令窗口并观察工作区窗口。您可以看到结构名称。通过访问结构名称,它可以工作。示例:
lm=load('data.mat');
disp(lm.SAMPLE.X);
这里SAMPLE是结构名称,X是该结构的成员