Search code examples
matlabstructuresimulinkbusnested-function

creating a structure from a bus object in matlab


I have a busobject which has elements and then each element either has a datatype of primitive (uint8 single, uint16) or has a datatype which is another bus object. i wanted to parse this but i get the error 'Function cannot be indexed using {} or .indexing' when i use a nested function since i need to use the bsu objects from the workspace. this is my code:

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

where component_name is the main bus object and counter determines the total number of primitives i am having and this value i already know.

for now am not able to solve this problem so I thought of converting the bus object to a structure which has all the data inside it. Is it possible?


Solution

  • also it is possible to create a structure from a bus using the matlab inbuilt function

    structFromBus = Simulink.Bus.createMATLABStruct(busSource)