Ich möchte zwei Strings aus zwei Strukturen vergleichen. Mein Code ist wie unten:Matlab: Strings in einer for-Schleife vergleichen
% Matlab Modell
scannen[variables] = Simulink.findVars('myModell');
variablesNames =[];
%save the names of all the variables in variablesNames
for t= 1:length(variables)
variablesNames(t).Name = variables(t).Name;
end
%scan workspace
for f = fieldnames(my_workspace)
found = false;
for c = 1:length(variablesNames)
if strcmp(f{c}, variablesNames(c))
found = true;
result = 'Found in Workspace: ';
end
if ~found
result = 'Not found inside Workspace';
end
end
disp(['Workspace Variable: ', sprintf('%-*s',40,f{c}), result]);
end
variablesNames eine Struktur 1x15 mit 1 Feld ist
my_workspace ist 1x1 Struktur mit 20 Feldern
Ich habe nur eine Variable als Rückgabe. Was ist falsch in diesem Code?
'f = Feldnamen (my_workspace)'? meinst du 'f = 1: numel (feldnamen (my_workspace))'? –
Sie meinen nur einen Wert in 'result'? Das ist ziemlich normal, da Sie es bei jedem Looping überschreiben. Versuchen Sie 'result' in' result {c} 'zu ändern. – BillBokeey
@Ander Biguri: Ich habe Ihren Vorschlag versucht, aber bitte beachten Sie, dass ** f ** eine 20x1 Zelle ist. Hier ist der Fehler: Zellinhaltsreferenz von einem Nicht-Zellen-Array-Objekt. Fehler in Stackoverflow (Zeile 13) wenn strcmp (f {c}, Variablennamen (c)) – lara