我有一个busobject,它有元素,然后每个元素的数据类型为primitive(uint8 single,uint16)或者数据类型是另一个总线对象。我想解析这个,但是当我使用嵌套函数时,我得到错误'函数无法使用{}或.indexing进行索引,因为我需要使用工作区中的bsu对象。 这是我的代码:
function s_func_parse(component_name,counter)
length_bus=length(component_name.Elements);
for i=1:length_bus
primitive_component{1,counter}=strcat(component_name.Elements(i).Datatype,'.');
if(strcmp(component_name.Elements(i).Datatype,'uint8')~=1 || strcmp(component_name.Elements(i).Datatype,'single')~=1 || strcmp(component_name.Elements(i).Datatype,'uint16')~=1 || strcmp(component_name.Elements(i).Datatype,'uint32')~=1)
new_component=char(busobject.Elements(i).Datatype);
s_func_parse(new_component,counter);
else
primitive_component{1,counter}=strcat(primitive_component,busobject.Element(i));
end;
end;
assignin('base', 'primitive_component', primitive_component);
end
其中component_name是主要的总线对象,而计数器决定了我所拥有的原语总数以及我已经知道的这个值。
现在我无法解决这个问题,所以我想把总线对象转换成一个里面有所有数据的结构。有可能吗?
答案 0 :(得分:1)
也可以使用matlab内置函数从总线创建结构
structFromBus = Simulink.Bus.createMATLABStruct(busSource)