WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

String liste

 

torsten23
Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 21.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2010, 17:44     Titel: String liste
  Antworten mit Zitat      
Wie kann ich mir sowas einfacher machen lassen?

legend('6', '7', '8', '9', '10', '11','12','13','14','15')

also eine String liste
Private Nachricht senden Benutzer-Profile anzeigen


yankemen
Forum-Century

Forum-Century


Beiträge: 104
Anmeldedatum: 14.04.10
Wohnort: ---
Version: 32: 2008a & 2010a
     Beitrag Verfasst am: 30.07.2010, 12:16     Titel:
  Antworten mit Zitat      
Moin torsten23,

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 Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2010, 12:41     Titel:
  Antworten mit Zitat      
Hallo,

Du kannst folgendes machen:

Code:


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.07.2010, 14:18     Titel:
  Antworten mit Zitat      
Hallo yankemen,

yankemen hat Folgendes geschrieben:
Code:

k=1;
for i=6:15
    liste(k) = int2str(i);
    k = k+1;
end

Klappt nicht. Für i>9 liefert INT2STR werden zwei CHARs, die nicht in ein CHAR des vektors "liste" passen.

Versuche dies:
Code:

C = cell(1, 10);
k=1;
for i=6:15
    C{k} = int2str(i);
    k = k+1;
end


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
yankemen
Forum-Century

Forum-Century


Beiträge: 104
Anmeldedatum: 14.04.10
Wohnort: ---
Version: 32: 2008a & 2010a
     Beitrag Verfasst am: 30.07.2010, 14:28     Titel:
  Antworten mit Zitat      
Moin Jan,

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 Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.07.2010, 16:17     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
yankemen
Forum-Century

Forum-Century


Beiträge: 104
Anmeldedatum: 14.04.10
Wohnort: ---
Version: 32: 2008a & 2010a
     Beitrag Verfasst am: 02.08.2010, 09:59     Titel:
  Antworten mit Zitat      
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....

Ciao,
yankemen

matlab2010a_liste.jpg
 Beschreibung:

Download
 Dateiname:  matlab2010a_liste.jpg
 Dateigröße:  220.53 KB
 Heruntergeladen:  360 mal

_________________

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 Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.08.2010, 13:18     Titel:
  Antworten mit Zitat      
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:
Code:

beudeutet das:
Code:

und das ist natürlich ein CHAR Vektor! Was Du (ich) aber wissen möchtest, ist:
Code:

Solche Verwirrungen haben mich inzwischen dazu gebracht immer die funktionelle Form von Funktionen zu benutzen:
Code:
hold('on');   % statt: hold on
axis('tight');  % statt axis tight
load('FileName');  % statt load FileName
 

Danke für das schöne Beispiel! Ich habe viele Minuten gegrübel...

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
yankemen
Forum-Century

Forum-Century


Beiträge: 104
Anmeldedatum: 14.04.10
Wohnort: ---
Version: 32: 2008a & 2010a
     Beitrag Verfasst am: 02.08.2010, 14:14     Titel:
  Antworten mit Zitat      
Moin Jan,

Jan S hat Folgendes geschrieben:
Code:

*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...Embarassed )
[/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 Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.08.2010, 01:35     Titel:
  Antworten mit Zitat      
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)" ! :-)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.