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

Probleme mit xlswrite (mat to xls) --> Error

 

JaSoIstEs
Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 12.12.2014, 20:34     Titel: Probleme mit xlswrite (mat to xls) --> Error
  Antworten mit Zitat      
Hallo,

hab ein kleines Problem mit xlswrite...

Ich schreibe folgendes in eine Mat-File:

Code:

% Save Current Setup
% ------------------


if not(Fault) & (FieldWeak < 3)
    save([CurDir, '\LastSetup.mat'], 'FileDirName', 'KeySpeed', 'KeyTorque', 'EndSpeed', 'EndTorque',...
               'MinSpeed', 'MaxSpeed', 'SpeedStep', 'TorqueStep', 'Vmax', 'Imax', 'Tbd')
   
   
elseif not(Fault) & (FieldWeak > 2)
    save([CurDir, '\LastSetup.mat'], 'FileDirName', 'SpeedMTX', 'TorqueMTX',...
               'MinSpeed', 'MaxSpeed', 'SpeedStep', 'TorqueStep', 'Vmax', 'Imax', 'Tbd')
end
 


Dann will ich mit folgenden code das alles in eine .XLS umwandeln:

Code:


data=load('LastSetup.mat');
f=fieldnames(data);
for k=1:size(f,1)
    xlswrite('LastSetupTest.xlsx',data.(f{k}),f{k})
end
 


Bekomme aber folgenden Fehler:
Code:

Cell contents reference from a non-cell array object.

Error in imd_ectr_main (line 27)
WorkingDir      = data{1};                                                  % working directory

Error in ImdEctrAct>runsim (line 840)
    imd_ectr_main(FieldWeak, data);

Error in ImdEctrAct (line 14)
    runsim
 
Error while evaluating uicontrol Callback


Hab sowas leider noch nie gemacht.

Hab im Anhang ein Bild wie die Mat file aussieht.

Danke im Voraus.

LastSetUp.JPG
 Beschreibung:

Download
 Dateiname:  LastSetUp.JPG
 Dateigröße:  89.81 KB
 Heruntergeladen:  257 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

die Fehlermeldung bezieht sich doch auf eine Zeile (WorkingDir = data{1};), die in dem geposteten Code gar nicht enthalten ist?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 14.12.2014, 00:37     Titel:
  Antworten mit Zitat      
Hallo Harald,

erstmal danke für deine (wieder) so schnelle Antwort.

Das wird in einer anderen M-File gespeichert.
Hier ist eigentlich nichts anderes drin als der Pfad in dem ich gerade arbeite.
Also ich lade eine File in die GUI und der Pfad dieser Datei wird dann in "WorkingDir" gespeichert.

Beispielpfad: C:\Users\MIMDS\Desktop\Project\07_Test_Motoren\01_Self_Created_Motor\04_m2_1_BAC_Static_calc_OK\pc_BDC.bd4

Code:
% User Input:
% ===========
 
WorkingDir      = data{1};                                                  % working directory


Ich hab mit diesem code bis jetzt keine Probleme bekommen nur wenn ich das mit xlswrite machen will. Deswegen verstehe ich eigentlich den Fehler nicht weil ich dieses "WorkingDir" hier garnicht benutze.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.12.2014, 18:12     Titel:
  Antworten mit Zitat      
Hallo,

setze doch mal einen Haltepunkt in die Zeile, in der die Fehlermeldung kommt.
Hast du dir vielleicht data vorher überschrieben? Du verwendest das ja anscheinend zweimal in unterschiedlichem Zusammenhang.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 15.12.2014, 16:36     Titel:
  Antworten mit Zitat      
Ups,
das mit dem Fehler war dumm...
benutze die variable "data" für zwei verschiedene Dinge, das hat den Fehler verursacht... Embarassed

Jetzt habe ich den Code geändert...
Ich bekomme nun keinen Fehler mehr.

Aber er schreibt nichts in die .xlsx rein also diese bleibt leer.


Code:

% Save Current Setup
% ------------------


if not(Fault) & (FieldWeak < 3)
    save([CurDir, '\LastSetup.mat'], 'FileDirName', 'KeySpeed', 'KeyTorque', 'EndSpeed', 'EndTorque',...
        'MinSpeed', 'MaxSpeed', 'SpeedStep', 'TorqueStep', 'Vmax', 'Imax', 'Tbd')
   
    dataKIR=load('LastSetup.mat');
    f=fieldnames(dataKIR);
    for k=1:size(f,1)
        xlswrite('LastSetupTest.xlsx',dataKIR.(f{k}),f{k})
    end
   
   
elseif not(Fault) & (FieldWeak > 2)
    save([CurDir '\LastSetup.mat'], 'FileDirName', 'SpeedMTX', 'TorqueMTX',...
        'MinSpeed', 'MaxSpeed', 'SpeedStep', 'TorqueStep', 'Vmax', 'Imax', 'Tbd')
   
    dataKIR=load('LastSetup.mat');
    f=fieldnames(dataKIR);
    for k=1:size(f,1)
        xlswrite('LastSetupTest.xlsx',dataKIR.(f{k}),f{k})
    end
end

 


Im ersten Post hab ich ein Bild hochgeladen die, die Mat-File zeigt.
Vielleicht mache ich grundsätzlich was falsch.
Und noch eine Frage hätte gibt es die Möglichkeit eine .xlsx zu erstellen ? Ohne das ich vorher eine angelegen muss ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.12.2014, 18:05     Titel:
  Antworten mit Zitat      
Hallo,

sieht gut aus.
Schau dir mal im Debugging-Modus an, ob die Werte von dataKIR.(f{k}) und f{k} sinnvoll sind.

Wenn die Datei nicht existiert, sollte sie automatisch erstellt werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 15.12.2014, 22:08     Titel:
  Antworten mit Zitat      
Also DataKIR sieht eigentlich gut aus (siehe Anhang).

Aber was mich irritiert ist, dass wenn LastSetupTest.xlsx nicht existiert wird diese nicht erstellt.

Und auch wenn diese da ist wird Sie nicht beschrieben.

DataKirInhalt.JPG
 Beschreibung:

Download
 Dateiname:  DataKirInhalt.JPG
 Dateigröße:  82.13 KB
 Heruntergeladen:  247 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 15.12.2014, 22:29     Titel:
  Antworten mit Zitat      
Oh, ich merke grad das er das ganz wo anders speichert und zwar in dem Ordner indem auch das M-File vorhanden ist....
Und in die xlsx sieht auch komisch aus.
Er erstellt neue sheets und schreibt die werte in jedes einzelne sheet und total komisch.

Leider kann ich die File hier nicht uploaden aber ich mach mal wieder ein Screenshot (siehe Anhang)

Xlsxfile.JPG
 Beschreibung:

Download
 Dateiname:  Xlsxfile.JPG
 Dateigröße:  247.74 KB
 Heruntergeladen:  277 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.12.2014, 23:31     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Oh, ich merke grad das er das ganz wo anders speichert und zwar in dem Ordner indem auch das M-File vorhanden ist....

Im Zweifelsfall den vollen Pfad angeben.

Zitat:
Er erstellt neue sheets und schreibt die werte in jedes einzelne sheet und total komisch.

Du musst mit { } ein Cell Array erstellen und das schreiben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 16.12.2014, 00:19     Titel:
  Antworten mit Zitat      
Das mit dem vollen Pfad ist eigentlich nicht so gut...
Da sich der Pfad immer ändert. Es wird eine Datei in der GUI ausgewählt und alle Datein wie z.B. Simulationsresultete und co. werden alle im selben Pfad gespeichert.
Kann ich hier das "CurDir" was ich beim speichern der mat-file nicht benutzen oder irgendwie mit einbauen ?

Wie meinst du das genau mit dem Cell-Array, was genau soll ich als Cell-Array schreiben ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.12.2014, 21:13     Titel:
  Antworten mit Zitat      
Hallo,

wenn du eine Variable hast, in der ein Pfad steht, und dann noch einen Dateinamen dazu, dann kannst du daraus ja eben einen vollständigen Pfad machen.

Die zu schreibenden Daten müssen bei Strings ein Cell Array sein. Probier's mal hiermit:
Code:
xlswrite('LastSetupTest.xlsx',{dataKIR.(f{k})},f{k})

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 17.12.2014, 12:02     Titel:
  Antworten mit Zitat      
...Ich glaub ich habe mich falsch ausgedrückt Embarassed

So wie du mir es jetzt gesagt hast mit dem Cell-Array funktioniert prima also er schreibt jetzt in jedem Sheet den Wert anständig rein.

Was ich aber eigentlich haben wollte ist:
(In einer Sheet):

Info1 Value1
Info2 Value2
Info3 Value3
usw.

Wenn ich folgendes schreibe:
Code:

xlswrite('LastSetup.xlsx',f,'Tabelle1')
 


Werden mir alle Feldnamen in das Excel-Sheet(Tabelle1) sauber rein geschrieben. Aber ich kriege die Werte nicht in die nächste Spalte.

Sorry für das Missverständnis.
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 17.12.2014, 14:50     Titel:
  Antworten mit Zitat      
Hab es jetzt so hinbekommen:

Code:

dataKIR=load('LastSetup.mat');
f=fieldnames(dataKIR);
    for k=1:size(f)
        xlswrite([CurDir,'\LastSetup.xlsx'],f,'Tabelle1','A1:A12')               xlswrite([CurDir,'\LastSetup.xlsx'],struct2cell(dataKIR),'Tabelle1','B1:B12')

    end
 


geht das auch eleganter ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.12.2014, 20:15     Titel:
  Antworten mit Zitat      
Hallo,

man kann die Daten wohl zusammenfassen, etwa so:

Code:
dataKIR=load('LastSetup.mat');
f=fieldnames(dataKIR);
    for k=1:size(f)
        towrite = [f; struct2cell(dataKIR)];
        xlswrite([CurDir,'\LastSetup.xlsx'],towrite,'Tabelle1','A1:B12')              
end


Allerdings wundert mich, dass dein Code das gewünschte macht, da die Iterationen nicht von k abhängen. Du schreibst doch jetzt einfach mehrfach dasselbe?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 17.12.2014, 21:56     Titel:
  Antworten mit Zitat      
Hallo,
Ne der Code macht eigentlich genau das was ich will, ohne etwas mehrfach zu schreiben...
War eher eine Verzweiflungstat, anscheinend mehr Glück als Verstand gehabt.
Morgen werd ich mal deine optimiertere Lösung ausporbieren und berichten.

Dankeschön.

(Sorry wenn ich dich so nerve aber ich hätte noch ein GUI Problem, hab auch schon einen Beitrag dazu veröffentlicht aber noch keine Antwort dazu erhalten. Das wäre so das letzte Problem das ich hätte dann wäre alles top. Ich danke dir im Voraus.)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.