Matlab:如何消除不存在字段的误差
我在运行matlab代码时出错。在这里,我试图使用以前代码的一个输出作为新代码的输入Matlab:如何消除不存在字段的误差,matlab,Matlab,我在运行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 abou
??? 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
考虑到艾德里克的评论,另一种可能的方法是
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
一个好的做法可能是在访问字段之前检查字段是否存在:
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
考虑到艾德里克的评论,另一种可能的方法是
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 ('filename');
使用:
现在,要引用加载文件中的任何变量,请使用f.varname,例如
示例:如果加载的数据中保存了一个名为net的网络,则可以使用它,如下所示:
a = f.net(fv);
您是否使用命令加载文件中的数据? 如果是,此函数将覆盖当前变量,因此这些变量将不存在,因此,当您调用时,它将替代使用:
load ('filename');
使用:
现在,要引用加载文件中的任何变量,请使用f.varname,例如
示例:如果加载的数据中保存了一个名为net的网络,则可以使用它,如下所示:
a = f.net(fv);
我会先解释我的情况,然后给出解决方案
- 我首先保存一个变量
,它是一个结构,它的名称是op
李>coef.mat
- 我使用
加载这个变量李>coef=load(文件路径,'-mat')
- 在一个新函数中,我将变量
作为一个参数传递给它,在这里,对不存在的字段的错误引用弹出coef
- 只需将
替换为coef
,然后将其传递给函数,它就会工作coef.op
load
并希望访问原始变量时,您需要使用dot(.)
操作直接指出它,您可以直接在Matlab workspace中打开变量,并找出变量中包含的内容
在您的例子中,如果您之前代码的输出是一个结构(我猜是这样,但您没有指出),并且您将其保存为MyStruct
,则将其加载为MyInput=load(MyStruct)
,,然后将其用作函数的参数时,它应该是MyInput.y1
希望它能起作用 我会先解释我的情况,然后给出解决方案
- 我首先保存一个变量
,它是一个结构,它的名称是op
李>coef.mat
- 我使用
加载这个变量李>coef=load(文件路径,'-mat')
- 在一个新函数中,我将变量
作为一个参数传递给它,在这里,对不存在的字段的错误引用弹出coef
- 只需将
替换为coef
,然后将其传递给函数,它就会工作coef.op
load
并希望访问原始变量时,您需要使用dot(.)
操作直接指出它,您可以直接在Matlab workspace中打开变量,并找出变量中包含的内容
在您的例子中,如果您之前代码的输出是一个结构(我猜是这样,但您没有指出),并且您将其保存为MyStruct
,则将其加载为MyInput=load(MyStruct)
,,然后将其用作函数的参数时,它应该是MyInput.y1
希望它能起作用 首先将其加载到命令窗口并观察工作区窗口。您可以看到结构名称。它将通过访问结构名来工作。例如:
lm=load('data.mat');
disp(lm.SAMPLE.X);
这里的示例是结构名称,X是结构的成员,首先将其加载到命令窗口并观察工作区窗口。您可以看到结构名称。它将通过访问结构名来工作。例如:
lm=load('data.mat');
disp(lm.SAMPLE.X);
这里的示例是结构名称,X是结构的成员遗憾的是,在这里使用try/catch实际上更快。遗憾的是,在这里使用try/catch实际上更快。