2015-03-20 4 views
0

J'ai un objet busobject qui a des éléments et puis chaque élément a un type de données de primitive (uint8 single, uint16) ou a un type de données qui est un autre objet de bus. J'ai voulu analyser ceci mais j'obtiens l'erreur «la fonction ne peut pas être indexée using {} ou .indexing» quand j'utilise une fonction imbriquée puisque je dois employer les objets de bsu de l'espace de travail. voici mon code:créer une structure à partir d'un objet de bus dans matlab

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 

où component_name est l'objet principal de bus et compteur détermine le nombre total de primitives je rencontre et cette valeur que je sais déjà. Pour l'instant je ne suis pas capable de résoudre ce problème, alors j'ai pensé à convertir l'objet bus en une structure qui a toutes les données à l'intérieur. C'est possible?

+0

ah bien je l'ai trouvé une solution de contournement. pas de soucis –

Répondre

1

Il est également possible de créer une structure à partir d'un bus en utilisant la fonction Matlab intégré

structFromBus = Simulink.Bus.createMATLABStruct(busSource)