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

Simulationsergebnisse in Excelfile ablegen/schreiben

 

Paula123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.09.2011, 21:41     Titel: Simulationsergebnisse in Excelfile ablegen/schreiben
  Antworten mit Zitat      
Hallo ihr lieben!
Ich bekomme jeweils ein Ergebnis aus meiner Simulation und möchte nun diese Ergebnisse übersichtlich untereinander in ein Excel-File schreiben.
zB.
Code:

j=0:2
while j<4
 for j=j+1
 M_2={ 2  4  5  4+j}
     xlswrite('AAA.xls', M_2, 'Ergebnisse', '????');
 end
end

 


Was kann ich für '????' schreiben? Es soll in der ersten Zeile erstes Feld die erste Zahl geschrieben werden, also in A1.
Ich habe folgende Möglichkeiten ausprobiert uvm,
Code:

'Aj' , 'A(j)', 'A', 'A1+j',...
 

aber sie funktionieren alle nicht so wie ich das gerne hätte Wink!!


Könnt ihr mir einen Tipp geben?
Die Matlab Hilfe hat mir leider nicht geholfen Sad !
Grüße!!


Harald
Forum-Meister

Forum-Meister


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

wenn man wüsste, was du schreiben willst, wäre das einfacher. Ich vermute, dass es A1, A2, ... sein sollen. Dann hilft:

Code:


Davon abgesehen ist wiederholtes Schreiben nach Excel recht ineffizient. Besser: die Daten in MATLAB sammeln und auf einmal schreiben.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.09.2011, 22:22     Titel: While-Schleifen-Ergebnisse in Matrix zusammenfügen
  Antworten mit Zitat      
Hallo!
Vielen Dank, du hast mich richtig verstanden, ich meinte untereinander also A1, A2, ..
und es funktioniert Smile!

Danke für den tipp! Wahrscheinlich habe ich deshalb nicht großartig etwas dazu gefudnen, da es so ineffizient ist.
Es dauert ja schon ziemlich lange bis das Excel File geschrieben ist jedesmal.

Wie kann ich denn die Ergebnisse in eine Matrix schreiben? Ich habe wieder Probleme mit der Schleife.

Ich müsste jedes M_2 so benennen, dass es in der MAtrix dann bei der Beschreibung der Matrix klar ist, dass M_2(j=1) die erste Zeile ist und M_2(j=2) dann die zweite Zeile usw. Aber das Beschreiben von M_2(j=...) kriege ich nicht hin..

Wie geht so etwas? Freu mich total über einen weiteren Tipp! Ich versuche schon die ganze Zeit mit kleinen miniprogrammen, aber es will nicht.. bin noch ziemlicher Anfänger.
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 28.09.2011, 07:14     Titel:
  Antworten mit Zitat      
Ineffizient - kann schon sein. Es kann aber auch sein, dass der Haken schon vorher verborgen ist. Muss denn jedes Element einzeln geschrieben werden? Es ist doch auch möglich eine Ergebnismatrix zu berechenen und dann auf einen Rutsch in Excel zu schieben.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 28.09.2011, 11:21     Titel:
  Antworten mit Zitat      
Andreas Goser hat Folgendes geschrieben:
Ineffizient - kann schon sein. Es kann aber auch sein, dass der Haken schon vorher verborgen ist. Muss denn jedes Element einzeln geschrieben werden? Es ist doch auch möglich eine Ergebnismatrix zu berechenen und dann auf einen Rutsch in Excel zu schieben.

Andreas


Ich glaub das ist genau das was Harald gemeint hat. Wink

Paula123 hat Folgendes geschrieben:

Wie kann ich denn die Ergebnisse in eine Matrix schreiben? Ich habe wieder Probleme mit der Schleife.


Zum Beispiel so:
Code:

values=NaN(10);
for i=1:10
 values(1) = i+4;
end
 


Sprich du musst Indizieren.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Paula123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2011, 13:03     Titel: Indizieren
  Antworten mit Zitat      
Hallo!
vielen Dank für die Antwort.
ja, stimmt, ich möche indizieren.

Leider verstehe ich nicht was dein Code bedeutet..
Was bedeutet
Code:
oder
Code:
values(1) = i+4;
?
Sad
 
Paula123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2011, 14:30     Titel: Ergebnisvektoren indizieren
  Antworten mit Zitat      
Ich versuch das nun seit Stunden hinhzubekommen, schaffe es aber nicht.

Das Ergebnis für die erste Iteration (i=1) ist ein Vektor
A={ 2 4 5 3 }.
Jetzt soll die 2. Iteration mit i=2 durchlaufen werden und wieder ein A-Vektor erstelllt werden, allerdings soll dieser nicht den ersten überschreiben.

Am Ende nach allen Durchläufen soll dann ein Vektor/Matrix aus den A's erstellt werden, ungefähr so:
Z=[A(1);A(2);A(3);...;A(i)].
Also sinngemäß, leider weiß ich nicht wie man das in Matlab schreibt.

Wisst ihr das?
 
Paula123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2011, 15:02     Titel: Ergebnisvektoren indizieren
  Antworten mit Zitat      
Ich versuch das nun seit Stunden hinhzubekommen, schaffe es aber nicht.

Das Ergebnis für die erste Iteration (i=1) ist ein Vektor
A={ 2 4 5 3 }.
Jetzt soll die 2. Iteration mit i=2 durchlaufen werden und wieder ein A-Vektor erstelllt werden, allerdings soll dieser nicht den ersten überschreiben.

Am Ende nach allen Durchläufen soll dann ein Vektor/Matrix aus den A's erstellt werden, ungefähr so:
Z=[A(1);A(2);A(3);...;A(i)].
Also sinngemäß, leider weiß ich nicht wie man das in Matlab schreibt.

Wisst ihr das?
 
fluuu
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 18.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.09.2011, 10:19     Titel:
  Antworten mit Zitat      
Hi Paula,

zwei Vektoren kannst du mit dem Befehl "vertcat" zusammenfügen.

Bsp.

Code:

A = [1 2 3 4]
B = [1 2 3 5]

erg = vertcat(A, B)

erg =

     1     2     3     4
     1     2     3     5

 


Wenn man dein einführendes Beispiel nimmt und so ergänzt das zuerst alles in ein Array geschreiben werden soll und dies sozusagen final in eine Excel Datei geschrieben wird dann sieht das ganze in etwa so aus:

Code:


Array = [];
for j = 1:4
    Vector=[ 2  4  5  4+j];
    Array = vertcat(Array,Vector);    
end

xlswrite('AAA.xls', Array, 'Ergebnisse');


 


Bin mir jetzt nicht sicher ob es das ist was du suchst.

VG
Private Nachricht senden Benutzer-Profile anzeigen
 
Paula123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.09.2011, 11:49     Titel: vertact , indizieren
  Antworten mit Zitat      
Hallo fluuu,
danke für deine Antwort!!
Ich denke ich bin fast da, vertcat macht einen super Eindruck Smile!

Jetzt ist aber noch mein Problem, dass mein die Einträge meines Ergebnisvektors nicht von i abhängig sind (war ein Fehler meinerseits bei meiner ersten Programmierung, entschuldigung!!), sondern es nach jedem Simulationsdurchlauf einen anderen Ergebnisvektor gibt. Bsp:
Code:

i=1
Ergebnisvektor={2  3  66 5}
i=2
Ergebnisvektor={1  23 1  3}
i=3
Ergebnisvektor={2  77 98  3}
.
.
.
 


Jetzt versuche ich
Code:

Array = [];
for j = 1:5
    Vector=Ergebnisvektor
    Array = vertcat(Array,Vector)
end

xlswrite('AAA.xls', Array, 'Ergebnisse');


aber es gibt mir den letzten Ergebnisvektor i (5) mal untereinander an.
Ich hoffe das ist verständlich.
Ich denke ich komme am indizieren nicht vorbei, oder?! Allerdings schaffe ich das einfach nicht. Wenn ich indiziert habe könnte ich dann leicht vertcat anwenden, denke ich.
 
Harald
Forum-Meister

Forum-Meister


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

du brauchst doch bloß die beiden Schleifen in eine zusammenfassen:
Code:

Array = [];
for i = 1:5
    % Ergebnisvektor wird abhängig von i errechnet
    Vector=Ergebnisvektor
    Array = vertcat(Array,Vector)
end

xlswrite('AAA.xls', Array, 'Ergebnisse');


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2011, 11:33     Titel: Indizieren?
  Antworten mit Zitat      
Hallo Harald,
ich kriege das nicht hin, verstehe auch nciht wie das so das mit erwähnten code funktionieren soll. Embarassed
Immer nur der letzte Ergebnisvektor wird in die Excel-Datei geschrieben.
Ich lönnte mir vorstellen, dass dieser Ergebnisvekrot immer wieder überschrieben wird, da er eben gleich heißt und es dann am Ende nur den letzten gibt!?
Question
 
Harald
Forum-Meister

Forum-Meister


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

da du nicht schreibst, was du machst oder nicht verstehst, kann ich dir nur noch genauer schreiben, wie ich es mir dachte:

Code:
Array = [];
for i = 1:5
    Vector= [ 2  4  5  4+i];
    Array = vertcat(Array,Vector)
end

xlswrite('AAA.xls', Array, 'Ergebnisse');  


Ja, der Ergebnisvektor wird natürlich überschrieben, aber deswegen werden die Ergebnisse ja auch in Array gesammelt (angehängt, nicht überschrieben).

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2011, 13:25     Titel: Indizierung?
  Antworten mit Zitat      
Hallo Harald,

vielleicht ist das ein Missverständis?

Mein Ergebnisvektor beinhaltet nur Zahlenwerte die nicht von i abhängen, aber eben für jedes verschiedene i noch einmal die Simulation durchlaufen wird und so es einen neuen Ergebnisvektor gibt. (hatte ich oben schon mal geschrieben)

Erst hatte ich im Ergebnisvektor einen von i abhängigen Eintrag, das war in meiner Programmierung leider falsch, aber das mit dem Array hat funktioniert.
Jetzt ohne diese i-Abhängigkeit überschreibt mit Matlab immer diesen Ergebnisvektor.

zB
Code:

 i= 1
Geschwindigkeit(i) =...
(Rechnungen..)
Ergebnisvektor = {23 3 2 44}

i= 2
Geschwindigkeit(i) =...
(Rechnungen..)
Ergebnisvektor = {8  77 15  22}
.
.
.

Array = [];
for i = 1:100

    Array = vertcat(Array,Ergebnisvektor)
end

xlswrite('Datei.xls', Array, 'Ergebnisse');  

 


Das klappt aber leider so nicht Sad
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 30.09.2011, 15:11     Titel:
  Antworten mit Zitat      
Hallo Paula,
wie wäre es mit
Code:

 i= 1
Geschwindigkeit(i) =...
(Rechnungen..)
Ergebnisvektor{i} = {23 3 2 44}

i= 2
Geschwindigkeit(i) =...
(Rechnungen..)
Ergebnisvektor{i} = {8  77 15  22}
 

?
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
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.