matlab中结构的未定义变量
undefined variable in matlab for a strcture
这有点蹩脚,但我无法消除这个错误。我有一个函数,我提供一个组件的名称,它是结构 add_strcut.
中的一个元素
所以 add_strcut 有 data_a , data_b 等等
和 data_a 具有字段 'ode'。再次 'ode' 有 'input'.
function bus_creator(component_name)
if (isfield(add_strcut.(component_name),'ode')==1)
for loop_out=1:length(add_strcut.(component_name).ode.input)
for loop_in=1:length(fieldnames(add_strcut.(component_name).ode.input{loop_out,2}))
struct_name=add_strcut.(component_name).ode.input{loop_out,2}.(char(fieldnames(add_strcut.(component_name).ode.input{loop_in,2})));
bus_creator_record(struct_name);
end
end
end
结束
当然,在调用函数时,我将组件名称提供为 'data_a'。但第二行抛出错误。
错误是未定义变量"add_strcut"或class"add_strcut.data_a"
尽管当我使用 F9 检查值时它显示正常但当我调用此函数时它抛出此错误
更新
function bus_creator(main_component,component_name)
if (isfield(main_component.(component_name),'ode')==1)
for loop_out=1:length(main_component.(component_name).ode.input)
for loop_in=1:length(fieldnames(main_component.(component_name).ode.input{loop_out,2}))
struct_name=main_component.(component_name).ode.input{loop_out,2}.(char(fieldnames(main_component.(component_name).ode.input{loop_in,2})));
bus_creator_record(struct_name);
end
end
end
end
这是更新后的功能。现在我将提供 main_component='add_strcut' 但现在要将它作为变量访问我需要将 main_component 放在方括号内但是如果我这样做那么它会抛出错误
在 (main_component).(component_name)
它以红色显示中间的点,错误是意外的 matlab 运算符
传递主结构时不要使用任何引号。只需将结构名称直接传递给函数而不使用 ''.
这有点蹩脚,但我无法消除这个错误。我有一个函数,我提供一个组件的名称,它是结构 add_strcut.
中的一个元素所以 add_strcut 有 data_a , data_b 等等
和 data_a 具有字段 'ode'。再次 'ode' 有 'input'.
function bus_creator(component_name)
if (isfield(add_strcut.(component_name),'ode')==1)
for loop_out=1:length(add_strcut.(component_name).ode.input)
for loop_in=1:length(fieldnames(add_strcut.(component_name).ode.input{loop_out,2}))
struct_name=add_strcut.(component_name).ode.input{loop_out,2}.(char(fieldnames(add_strcut.(component_name).ode.input{loop_in,2})));
bus_creator_record(struct_name);
end
end
end
结束
当然,在调用函数时,我将组件名称提供为 'data_a'。但第二行抛出错误。
错误是未定义变量"add_strcut"或class"add_strcut.data_a"
尽管当我使用 F9 检查值时它显示正常但当我调用此函数时它抛出此错误
更新
function bus_creator(main_component,component_name)
if (isfield(main_component.(component_name),'ode')==1)
for loop_out=1:length(main_component.(component_name).ode.input)
for loop_in=1:length(fieldnames(main_component.(component_name).ode.input{loop_out,2}))
struct_name=main_component.(component_name).ode.input{loop_out,2}.(char(fieldnames(main_component.(component_name).ode.input{loop_in,2})));
bus_creator_record(struct_name);
end
end
end
end
这是更新后的功能。现在我将提供 main_component='add_strcut' 但现在要将它作为变量访问我需要将 main_component 放在方括号内但是如果我这样做那么它会抛出错误
在 (main_component).(component_name)
它以红色显示中间的点,错误是意外的 matlab 运算符
传递主结构时不要使用任何引号。只需将结构名称直接传递给函数而不使用 ''.