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 运算符

传递主结构时不要使用任何引号。只需将结构名称直接传递给函数而不使用 ''.