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

Daten zusammenfassen, sortieren, Überschriften und xlswrite

 

JaSoIstEs
Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 29.04.2015, 11:02     Titel: Daten zusammenfassen, sortieren, Überschriften und xlswrite
  Antworten mit Zitat      
Hallo,

habe eine .mat File die wie folgt aussieht:

Inhalt der Mat-File
______________
Nary 31x1 double
OPmtx 1x23 cell
Pary 1x6001 double
Tary 31x1 double
______________


Ich würde gerne den Inhalt der OPmtx zu einer Matrix zusammenfassen.
Im oben gezeigten Beispiel hab ich ja 23 "Pakete" in OPmtx aus diesen "Paketen" soll eins werden. Die Zeilenanzahl ist Variable und die Spaltenanzahl fest. Beispielgöße: 31x45.

Nach dem die Daten zusammengefasst wurden, soll diese Gesamt-Matrix nach der ersten Spalte sortiert werden (klein -> groß)

Und in die erste Zeile der Matrix soll denn für jede Spalte ein String eingefügt werden. Um die einzelnen Spalten identifizieren zu können.

Das ganze müsste ich dann noch mithilfe von xlswrite in Excel "konvertieren".

Mein Problem ist, dass ich einfach keinen wirklichen Ansatz habe wie ich das ganze angehen kann/soll.

Wie ich sowas händisch zusammenfassen kann ist mir klar:

Code:

GesamtMatrix = [OPmtx{1,1};OPmtx{2,1};OPmtx{3,1}]
 


Ich hoffe ihr könnt mir weiterhelfen. Vielen Dank.

Edit: Habe zumindest das zusammenfassen hinbekommen Very Happy

Code:


GesamtMatrix = [vertcat(OPmtx{1,:})]

 


Edit2: Habe auch eine funktion gefunden die das anscheinend automatisch sortiert. Hoffe die funktioniert auch fehlerlos.

Code:


GesamtMatrix = sortrows(GesamtMatrix)

 
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

welche Frage bleibt nun eigentlich noch?

Zitat:
Hoffe die funktioniert auch fehlerlos.

Wenn man sie richtig anwendet, bin ich da recht zuversichtlich.

Was das Schreiben nach Excel angeht, sind Tables und writetable oft eine sehr angenehme und bequeme Lösung.

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: 29.04.2015, 11:56     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine Antwort.

Wie könnte man "sortrows" falsch anwenden ?

Offene Fragen sind noch:

Die "Überschriften" hinzufügen ohne das ich die erste Zeile aus der Matrix lösche bzw. ersetze.

gibt es da Unterschiede an der Performance zwischen tables, writetables und xlswrite.

Ich persönlich hätte das jetzt mit xlswrite ausprobiert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Wie könnte man "sortrows" falsch anwenden ?

Vermutlich in vielerlei Art. Wenn man es aber so anwendet wie in der Dokumentation beschrieben, wüsste ich nicht, warum es Probleme geben sollte.
Fragen wir mal anders: woher kommt denn sowas wie "Hoffe die funktioniert auch fehlerlos" oder auch das "anscheinend" davor? Hast du da Zweifel? Welche?

Zitat:
Die "Überschriften" hinzufügen ohne das ich die erste Zeile aus der Matrix lösche bzw. ersetze.

Das wäre mit Tables angenehm lösbar.

Zitat:
gibt es da Unterschiede an der Performance zwischen tables, writetables und xlswrite.

Weniger hinsichtlich Performance als hinsichtlich intuitiver Nutzung. Probier's doch mal?

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: 29.04.2015, 14:13     Titel:
  Antworten mit Zitat      
Naja es sind zu viele Daten um Sie im einzelnen zu überprüfen aber auf dem ersten Blick sollte alles so passen.

So wie ich das aus der Dokumentation verstehe müsste ich die Daten wie folgt abspeichern:

Code:
LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

T = table(Age,Height,Weight,BloodPressure,...
    'RowNames',LastName)


Aber die von mir verwendete Mat-File wird aus einer ewigen langen Berechnung generiert.

Kann ich das Tables trotzdem verwenden ? Wenn ja, wie ?
Also wie könnte ich das auf mein Beispiel übertragen und dann direkt in eine .xls umwandeln ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.04.2015, 14:34     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Aber die von mir verwendete Mat-File wird aus einer ewigen langen Berechnung generiert.

ok...

Zitat:
Kann ich das Tables trotzdem verwenden ? Wenn ja, wie ?
Also wie könnte ich das auf mein Beispiel übertragen und dann direkt in eine .xls umwandeln ?

Warum sollte das nicht gehen?
Für mich sieht es so aus, als ob du array2table auf Gesamtmatrix anwenden könntest. Irgendwo müssen halt die Überschriften spezifiziert werden.

Wenn dir Performance wichtig ist, würde ich im übrigen .csv statt .xls verwenden.

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: 29.04.2015, 15:16     Titel:
  Antworten mit Zitat      
Hallo,

hab das hier jetzt geschrieben:

Code:

clear  workspace;
clc;

load m12_2_2_10_lfe185_SK_SimRes

GesamteMessung = [vertcat(OPmtx{1,:})];

GesamteMessung = sortrows(GesamteMessung);

Names = {'Speed'  'Torque'  'TorqueRipple'  'Vsupply'  'Isupply'  'Frq'  'IlinePeak'  'IlineRMS'  'IlineAVG'  'IphasePeak'  'IphaseRMS' 'IphaseAVG' 'PF'  'Efficiency'  'Sipt'  'Pipt'  'Pout'  'R'  'L'  'M'  'Vd'  'Vq'  'Id'  'Iq'  'Ld'  'Lq'  'Xd'  'Xq'  'AdvAngle'  'Wtotal'  'Wcopper'  'Wfe'  'Wcan'  'Wmagnet'  'Wshaft'  'WWF'  'Wstator'  'Wrotor'  'Wconv'  'VlineRMS'  'VphaseRMS'  'VsinMax'  'V120Max'  'VS1'  'Delta'};

Hallo = array2table(GesamteMessung,'VariableNames',Names);

filename = 'IchBinEinTest.xls';
writetable(Hallo,filename);
 


Wenn ich das jetzt unter Matlab 2011b ausprobiere kennt er die array2table funktion nicht. Shocked

Gibt es da eine andere Lösung?


Edit:

hab hier was gefunden (kann es aber gerade nicht testen)

Code:
printmat(yourMatrix, 'yourMatrix', 'ROW1 ROW2 ROW3 ROW4 ROW5', 'COLUMN1 COLUMN2 COLUMN3 COLUMN4 COLUMN5' );
 


Und das writetable mit xlswrite ersetzen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Wenn ich das jetzt unter Matlab 2011b ausprobiere kennt er die array2table funktion nicht.

Ist nicht verwunderlich, da Tables erst mit R2013b eingeführt wurden.

In der Statistics Toolbox gibt es Dataset Arrays, die den gleichen Zweck erfüllen. Tables sind meiner Meinung nach an manchen Stellen etwas intuitiver als Dataset Arrays. Zum Schreiben einer Datei gibt es dann eine Methode export.

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: 29.04.2015, 16:05     Titel:
  Antworten mit Zitat      
Habe den Code wie folgend geändert:

Code:

clear  workspace;
clc;

load m12_2_2_10_lfe185_SK_SimRes

GesamteMessung = [vertcat(OPmtx{1,:})];

GesamteMessung = sortrows(GesamteMessung);

A= dataset({GesamteMessung 'Speed', 'Torque', 'TorqueRipple', 'Vsupply', 'Isupply', 'Frq', 'IlinePeak', 'IlineRMS', 'IlineAVG', 'IphasePeak', 'IphaseRMS','IphaseAVG','PF', 'Efficiency', 'Sipt', 'Pipt', 'Pout', 'R', 'L', 'M', 'Vd', 'Vq', 'Id', 'Iq', 'Ld', 'Lq', 'Xd', 'Xq', 'AdvAngle', 'Wtotal', 'Wcopper', 'Wfe', 'Wcan', 'Wmagnet', 'Wshaft', 'WWF', 'Wstator', 'Wrotor', 'Wconv', 'VlineRMS', 'VphaseRMS', 'VsinMax', 'V120Max', 'VS1', 'Delta'});

filename = 'IchBinEinTest.xls';

export(A,'file',filename);


%Ab 2012 s.u.
%Hallo = array2table(GesamteMessung,'VariableNames',Names);
% filename = 'IchBinEinTest.xls';
% writetable(Hallo,filename);
 


Leider ist die abgespeicherte .xls Datei fehlerhaft, in Matlab selber sieht es noch gut aus.

Bzw. in Matlab steht der Wert so da 3.6727 und in Excel so 367272858225678. Solange vor dem Komma eine Null vorhanden ist oder gar kein Komma vorhanden ist, ist die Welt noch in Ordnung.

Hab die Datei mal als Anhang hochgeladen.

IchBinEinTest.xls
 Beschreibung:

Download
 Dateiname:  IchBinEinTest.xls
 Dateigröße:  272.14 KB
 Heruntergeladen:  490 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: 29.04.2015, 16:31     Titel:
  Antworten mit Zitat      
Sorry das lag an Excel auf diesem Rechner.

Die Punkt und Komma Geschichte.

Dann ist hiermit alles geklärt.

Vielen Dank für deine Hilfe.
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: 29.11.2015, 19:40     Titel:
  Antworten mit Zitat      
Ich habe leider eine Rückfrage zu diesem Thema.

Ich wollte das ganze jetzt nicht als *.xls abspeichern sondern als xlsx.

Sobald ich die Datei öffne ist Sie leer bzw. ich sehe keinen Inhalt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

verwendest du aktuell writetable oder export?
Ein reproduzierbares Beispiel wäre hilfreich.

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: 30.11.2015, 12:42     Titel:
  Antworten mit Zitat      
Hallo,

sorry für die späte Antwort.

Ich benutze export.

Das ist jetzt kein Minimalbeispiel. Ich kann versuchen ein Minimalbeispiel zu erzeugen. Nur muss ich dazu eine *.mat file mit Hochladen.

Code:

load ([WorkingDir, '\', filename, '_SimRes_Ohne_Filterung.mat']);

GesamteMessung = [vertcat(OPmtx{1,:})];

GesamteMessung = sortrows(GesamteMessung);

A = dataset({GesamteMessung 'Speed', 'Torque', 'TorqueRipple', 'Vsupply', 'Isupply_Corrected', 'Frq', 'IlinePeak',...
    'IlineRMS', 'IlineAVG', 'IphasePeak', 'IphaseRMS','IphaseAVG','PF', 'Efficiency', 'Sipt',...
    'Pipt', 'Pout', 'R', 'L', 'M', 'Vd', 'Vq', 'Id', 'Iq', 'Ld', 'Lq', 'Xd', 'Xq', 'AdvAngle',...
    'Wtotal', 'Wcopper', 'Wfe', 'Wcan', 'Wmagnet', 'Wshaft', 'WWF', 'Wstator', 'Wrotor', 'Wconv',...
    'VlineRMS', 'VphaseRMS', 'VsinMax', 'V120Max', 'VS1', 'Delta', 'XSatn','ECU_Losses_Corrected','P_DC','Isupply','ECU_Losses','Bstpk','Bsypk','Brypk'});

export(A,'file',[WorkingDir, '\', filename, '_Berechnungsdatei_Ohne_Filterung.xls']);

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.11.2015, 17:37     Titel:
  Antworten mit Zitat      
Hallo,

dann mach das doch bitte, oder versuche, ob du das Problem mit den Standarddatensätzen, die in der Dokumentation von dataset verwendet werden, reproduzieren kannst.
Der jetzige Code verwendet zudem doch gerade .xls statt .xlsx?

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: 02.12.2015, 14:58     Titel:
  Antworten mit Zitat      
Hallo,

Sorry für die verspätete Antwort.

Im Anhang findest du die M-File sowie eine Test *.mat.

Im Moment ist die Ausgabe auf *.xls eingestellt.

Bei *.xlsx lässt sich die Datei nicht Excel öffnen.

Danke.

Mat_File_Einlesen_Export_Excel.m
 Beschreibung:

Download
 Dateiname:  Mat_File_Einlesen_Export_Excel.m
 Dateigröße:  718 Bytes
 Heruntergeladen:  415 mal
Test.mat
 Beschreibung:

Download
 Dateiname:  Test.mat
 Dateigröße:  113.61 KB
 Heruntergeladen:  422 mal
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.