2015-03-03 3 views
0

это своего рода хромой, но я не могу удалить эту ошибку. У меня есть функция, где я предоставляю имя компонента, который является элементом внутри структуры add_strcut.неопределенная переменная в matlab для strcture

так add_strcut имеет data_a, Данные и т.д.

и data_a имеет поле 'ода'. и снова «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». но вторая строка вызывает ошибку.

ошибка undefuned переменная «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

+0

Если объявленная глобальная переменная, определенная вне функции, не может быть замечена вне области действия. Таким образом, решение заключается в передаче 'add_strcut' функции (а не только' component_name'). Другим решением является удаление всех вызовов в 'add_strcut' и только вызов' component_name'. – patrik

+1

вы никогда не передаете переменную 'add_strcut' функции' bus_creator' ... так уверен, что она не определена в ее области ... – CitizenInsane

+0

Какая ошибка? – Daniel

ответ

0

при прохождении основной структуры не используют никаких кавычек. просто передайте имя структуры прямо к функции, не используя ''.

Смежные вопросы