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

Cell Variable als Variablenname in for Schleife eintragen

 

Victoria
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 21.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2020, 09:33     Titel: Cell Variable als Variablenname in for Schleife eintragen
  Antworten mit Zitat      
Hallo,

ich möchte eine cell Variable in den Namen einer .xlsx Datei schreiben. Dies erfolgt in einer for Schleife. Der Name der Datei soll dann z.B. 'Tier Katze 1.xlsx' lauten.

Code:

for n=1:4
Größe=[1,2,3,4];
Farbe=[schwarz,rot,braun,weiß];
T=table(Größe,Farbe);
Tier=['Katze', 'Maus', 'Hase', 'Igel'];
filename=sprintf('Tier %s %s', Tier(n), num2str(n));
writetable(T,filename,'Sheet','Farbe');
end
 


Leider bekomme ich den Fehler:
Error using sprintf
Function is not defined for 'cell' inputs.

Kann mir jemand eine andere Funktion empfehlen? Das Problem auch bei anderen Varianten ist, dass die Variable Tier eine cell Variable ist. Leider kann ich das nicht ändern.

Danke für die Anregungen!

Grüße
Victoria

Zuletzt bearbeitet von Victoria am 27.07.2020, 10:02, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.07.2020, 09:49     Titel:
  Antworten mit Zitat      
Hallo,

in dem sprintf - Aufruf müsstest du doch auch in die Tier-Variable indizieren? Vielleicht geht es dann schon.

Ansonsten etwas in der Art:
Code:
filename = "Tier " + Tier{n} + n


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Victoria
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 21.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2020, 09:56     Titel:
  Antworten mit Zitat      
Hallo Harald,

ja das habe ich vergessen zu tippen, aber das hatte ich schon gemacht so.
Leider besteht immer noch ein Problem mit dem cell Format.

Viele Grüße
Victoria
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.07.2020, 10:01     Titel:
  Antworten mit Zitat      
Hallo,

die Art der Klammern ist das entscheidende. Um etwas aus einem Cell Array zu extrahieren, benötigst du { } statt ( )

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Victoria
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 21.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2020, 10:13     Titel:
  Antworten mit Zitat      
Danke, daran lag es!
Private Nachricht senden Benutzer-Profile anzeigen
 
Victoria
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 21.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2020, 10:31     Titel:
  Antworten mit Zitat      
Leider wird jetzt folgender Fehler ausgespuckt:

'Matrix dimensions must agree'

Ich wollte ja gar keine Matrix erzeugen mit
Code:

filename ="Tier" + Tier{n} + n + ".xlsx";
 


Mit mat2str funktioniert es leider auch nicht.

Grüße
Victoria
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.07.2020, 11:00     Titel:
  Antworten mit Zitat      
Hallo,

das kann ich so nicht nachvollziehen. Folgendes funktioniert:

Code:
Tier={'Katze', 'Maus', 'Hase', 'Igel'}; % { } statt ( ), sonst ist das nicht sinnvoll
n = 1;
filename ="Tier" + Tier{n} + n + ".xlsx"


Um zu verstehen wie die Fehlermeldung zustande kommt, bräuchte ich ein reproduzierbares Beispiel.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Victoria
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 21.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2020, 11:17     Titel:
  Antworten mit Zitat      
Hallo,

ja jetzt klappt es.
Ich verstehe leider den Unterschied von "Name" und 'Name' nicht. Mit "Name" funktioniert es wie du beschrieben hast.
Danke!
Victoria
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.07.2020, 11:43     Titel:
  Antworten mit Zitat      
Hallo,

das sind unterschiedliche Datentypen.
' ' erzeugt ein char-Array, während " " einen String erzeugt. Das Arbeiten mit Strings ist generell intuitiver, an manchen Stellen aber auch einfach nur anders.
Strings gibt es seit R2016b und sie sind quasi die moderneren char-Arrays, da man sich damit auch die Cell Arrays von chars schenken kann.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 2024 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.