matlab中的未定义变量用于结构

时间:2015-03-03 08:41:41

标签: matlab function variables structure

这有点蹩脚,但我无法删除此错误。我有一个函数,我提供组件的名称,该组件是结构add_strcut中的一个元素。

所以add_strcut有data_a,data_b等。

和data_a的字段为'ode'。再次'ode'有'输入'。

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”或类“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运算符

1 个答案:

答案 0 :(得分:0)

通过主体结构时,请勿使用任何引号。只需将结构名称直接传递给函数,而无需使用''。