Du möchtest eine Liste, die die Zahlen von 6 bis 15 als einzelne Strings enthält?
Spontaner Versuch:
Code:
k=1;
for i=6:15
liste(k) = int2str(i);
k = k+1;
end
liste
'6' '7' '8' '9' '10' '11' '12' '13' '14' '15'
liste(2)
'7'
class liste
char % liste ist ein 1*10-cell
Hilft Dir das?
Ciao,
yankemen
_________________
Code:
% Kommentare brauchen ein Leerzeichen nach dem %
Gibt es ein Ist und ein Wunsch-Soll? Gibt es Beispiele zum Durchprobieren? Wenn selbstgeschriebene Funktionen aufgerufen werden: können sie bitte angehangen werden? Gab es Fehlermeldungen?
Stimmen die Werte, wenn der Debugger mit Haltepunkten etc. eingesetzt wird?
Danke
komisch, ich bekomme keinen Fehler und sowohl Dein C als mein liste sind laut isequal(C,liste) identisch.
okay, mit 2008a bekomme ich den Fehler
Code:
??? In an assignment A(:) = B, the number of elements in A and B
must be the same.
Matlab 2010a hingegen liefert mir das gleiche wie Deine Version. Ob das jetzt ein Bug oder ein feature ist, sei mal dahin gestellt.
Ciao,
yankemen
_________________
Code:
% Kommentare brauchen ein Leerzeichen nach dem %
Gibt es ein Ist und ein Wunsch-Soll? Gibt es Beispiele zum Durchprobieren? Wenn selbstgeschriebene Funktionen aufgerufen werden: können sie bitte angehangen werden? Gab es Fehlermeldungen?
Stimmen die Werte, wenn der Debugger mit Haltepunkten etc. eingesetzt wird?
Danke
Jan S
Forum-Guru
Beiträge: 393
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 6.5, 2009a
Verfasst am: 30.07.2010, 16:17
Titel:
Hallo yankeman,
Ich vermute, Du hattest "liste" bereits vorher als CELL definiert.
Du hast geschrieben:
Zitat:
class liste
char
% liste ist ein 1*10-cell
Ist es nun ein CELL array oder ein CHAR?!
Wenn dies nicht zu einem Fehler in 2010a führt, solltest Du einen Bugreport einschicken:
Code:
clear('liste'); % Eventuell vorher definierte CELL entfernen!!!
k=1;
for i=6:15
liste(k) = int2str(i);
k = k+1;
end
Gruß, Jan
yankemen
Forum-Fortgeschrittener
Beiträge: 97
Anmeldedatum: 14.04.10
Wohnort: ---
Version: 32: 2008a & 2010a
Verfasst am: 02.08.2010, 09:59
Titel:
Moin Jan,
im Anhang meine Befehle und deren Ergebnis unter R2010a als Screenshot. War am Freitag dann schon offline, deswegen erst jetzt.
Wie das jetzt zu bewerten ist: hm, k.A....
Gibt es ein Ist und ein Wunsch-Soll? Gibt es Beispiele zum Durchprobieren? Wenn selbstgeschriebene Funktionen aufgerufen werden: können sie bitte angehangen werden? Gab es Fehlermeldungen?
Stimmen die Werte, wenn der Debugger mit Haltepunkten etc. eingesetzt wird?
Danke
Jan S
Forum-Guru
Beiträge: 393
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 6.5, 2009a
Verfasst am: 02.08.2010, 13:18
Titel:
Hallo Yankeman,
hahaha. Ich bin soo tief ins Grübeln geraten, aber dann war der Fehler doch recht klar:
Wenn Du vorher noch "clear all" or "clear liste" eingeben könntest, würde auch in 2010a ein Fehler erscheinen.
Trotz Deines Screenshots ist "liste" kein CHAR array!!! Wenn Du diesen Befehl eingibst:
*kopftisch* *rofl*
Okay, ja, das ist ein himmelweiter Unterschied. Ich hatte es schneller aufgegeben, diesen Fehler zu ergründen.
Allerdings muss ich Dich enttäuschen, was Deinen erwarteten Fehler angeht. Ich habe bewusst die Command History im Bild. Auf dieser sollte m.E. ersichtlich sein, dass und welche Befehle ich frisch und neu nach dem Start von Matlab eingegeben habe.
[edit]
Code:
% das erzeugt unter 2010 die gewünschte Liste
k = 1;
for i=6:15
liste{k} = int2str(i);
end % unter 2008a kommt hier der Fehler
??? Cell contents assignment to a non-cell array object.
% das erzeugt immer den gleichen Fehler:
k = 1;
for i=6:15
liste(k) = int2str(i);
end
??? In an assignment A(:) = B, the number of elements in A and B must be the same.
% Der Unterschied liegt in den geschweiften Klammern, die zum Erfolg führen.
Ist es jetzt immer noch merkwürdiges Verhalten?
(Ich hatte mir meinen Screenshot nochmal genauer angeschaut...
Mein Posting mit den runden Klammern war fehlerhaft, weil ich es manuell vom Notebook übertrug... )
[/edit]
Was tun? Sprach Zeus äh yankemen, und überlegte...[/b]
_________________
Code:
% Kommentare brauchen ein Leerzeichen nach dem %
Gibt es ein Ist und ein Wunsch-Soll? Gibt es Beispiele zum Durchprobieren? Wenn selbstgeschriebene Funktionen aufgerufen werden: können sie bitte angehangen werden? Gab es Fehlermeldungen?
Stimmen die Werte, wenn der Debugger mit Haltepunkten etc. eingesetzt wird?
Danke
Jan S
Forum-Guru
Beiträge: 393
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 6.5, 2009a
Verfasst am: 03.08.2010, 01:35
Titel:
Hallo yankemen,
Code:
clear('liste'); % *mit* clear % Besser wäre natürlich: liste = cell(1, 10) zum Pre-Allocieren
k = 1;
for i=6:15
liste{k} = int2str(i);
k = k + 1 end
Das läuft unter 6.5, 2008b, 2009a.
Dieser Fehler:
Zitat:
% unter 2008a kommt hier der Fehler
??? Cell contents assignment to a non-cell array object.
sieht so aus, als sei "liste" vorher eine nicht-CELL-Variable gewesen. Das "clear('liste')" schafft dann Abhilfe.
Gruß, Jan
PS. nicht "clear(liste)" ! :-)
Options and Permissions
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.