die beiden Varianten sollten in der angegebenen Form genau das gleiche machen, da es egal ist, ob du eine Variable angibst oder direkt deren Inhalt. Ist vielleicht beim Erstellen des Strings etwas schiefgegangen?
Hallo Harald,
danke für die schnelle Antwort.
Soweit ich das überblicke ist der String korrekt erstellt.
Siehst du vielleicht einen Fehler? Hier noch der Code mit dem ich den String erstelle.
Code:
%Schleife zum Erstellen des Strings
n = size(Konzepte,1)
String = 'Konzepte{1}'
String = [String,', '] for n = 2:n
a = n
n = ['Konzepte{'] if a < size(Konzepte,1)
n = [n,num2str(a),'}, '] else
n = [n,num2str(a),'}'] end
String = [String,n] end
%String an Pulldown Menue übergeben
set(hObject, 'String', String);
Das Problem war, dass ich in dem String noch einmal auf ein anderes Array zugegriffen hab.
Daher musste ich den String erst einmal mit "eval" ausführen.
Hier der funktionierende Code
Code:
%Schleife zum Erstellen des Strings
n = size(Konzepte,1)
String = '{Konzepte{1}'
String = [String,', '] for n = 2:n
a = n
n = ['Konzepte{'] if a < size(Konzepte,1)
n = [n,num2str(a),'}, '] else
n = [n,num2str(a),'}}'] end
String = [String,n] end
String = eval(String)
%String an Pulldown Menue übergeben
set(hObject, 'String', String);
Brrr. EVAL ist immer eine schlechte Wahl.
Ich kann beim Lesen des Codes nicht mehr auf Anhieb erkennen, was überhaupt gemacht wird.
Wenn ich es richtig verstehe, sollte dies direkt funktionieren:
Komplizierte Methoden zu verwenden um komplizierte Strings zu erzeuigen, die dann ineffizient per EVAL abgearbeitet werde, ist sagenhaft unpraktisch. Trotzdem ist es weit verbreitet und Du findest hier im Forum bestimmt 1000 Diskussionen zum Thema, die alle das gleiche Ergebnis haben: Es gibt immer eine bessere Lösung.
Übrigens:
Code:
A = {'a', 'b', 'c', 'd'};
% Nun erzeugen folgende Ausdrücke das gleiche Ergebnis:
B = {A{1}, A{2}, A{3}};
C = A(1:3);
du hast recht. Dein Aufruf funktioniert wunderbar!
Hatte es auch erst so probiert, aber da muss sich irgendwo ein Tippfehler eingeschlichen haben. Jetzt funktioniert es jedenfalls, ohne den unübersichtlichen String Teil
Besten Dank dafür!
Grüße, Kai
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.