在matlab中从总线对象创建结构

时间:2015-03-20 09:40:58

标签: matlab structure simulink bus nested-function

我有一个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是主要的总线对象,而计数器决定了我所拥有的原语总数以及我已经知道的这个值。

现在我无法解决这个问题,所以我想把总线对象转换成一个里面有所有数据的结构。有可能吗?

1 个答案:

答案 0 :(得分:1)

也可以使用matlab内置函数从总线创建结构

structFromBus = Simulink.Bus.createMATLABStruct(busSource)