это своего рода хромой, но я не могу удалить эту ошибку. У меня есть функция, где я предоставляю имя компонента, который является элементом внутри структуры 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
Если объявленная глобальная переменная, определенная вне функции, не может быть замечена вне области действия. Таким образом, решение заключается в передаче 'add_strcut' функции (а не только' component_name'). Другим решением является удаление всех вызовов в 'add_strcut' и только вызов' component_name'. – patrik
вы никогда не передаете переменную 'add_strcut' функции' bus_creator' ... так уверен, что она не определена в ее области ... – CitizenInsane
Какая ошибка? – Daniel