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

Abspeichern von Zwischenwerten einer For Schleife in Excel

 

Klausi24
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 20.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2011, 14:06     Titel: Abspeichern von Zwischenwerten einer For Schleife in Excel
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Problem mit Matlab. Habe schon verschiedene Dinge ausprobiert, komme aber nicht auf einen grünen Zweig. Vielleicht wisst ihr ja einen rat.

Folgendes Problem habe ich:

Ich habe eine For Schleife die N Durchläufe macht bis Sie abbricht. Es werden 6 verschiedene Werte innerhalb der For Schleife pro Durchlauf berechnet.
Ich möchte alle sechs Werte pro Durchlauf N jeweils in eine Spalte einer Excel Tabelle speichern:

z.B:
N---------------a b c d e f g
1 Durchlauf 12 13 14 11 1 5 6
2 Durchlauf 13 14 111 2 6 8 9

Am sinnvollsten ist es mit Sicherheit, diese erst Matlab intern in einem Vektor abzuspeichern, was ich tue. AUnd nach der Schleife einen Befehl, das es in die Excel Tabelle Geschrieben wird. Es handelt sich um sehr viele Zeilen. Das Programm schreibt mir irgendwie nur den letzen wert in die Excel Tabelle. Wenn ich den Befehl xls write in die Schleife integriere, ddauert es sehr lange und die erste zeile wird immer wieder überschrieben?
Code:

a=zeros(1,N);(Befehl für das schreiben von zwischenWErten in einen Nullvektor)
xlswrite('Versuch.xls','a','Tabelle1','A1:A20000');
 


Welche Zwischenabspeicherung von Daten brauche ich und wwie kann ich diese später in eine Excel Tabelle integrieren?? Weiß jemand einen Rat? Vielen Dank im Voraus für eure Unterstüzung!

Beste Grüße Klaus
Private Nachricht senden Benutzer-Profile anzeigen


Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2011, 15:07     Titel:
  Antworten mit Zitat      
Hi,
ich bin nicht ganz sicher wo genau dein Problem liegt. Zeig doch bitte ein bißchen Code, wie du es bis jetzt probiert hast. Eigentlich sollte es ganz einfach sein, wenn du die Daten aus der for-Schleife schon gespeichert hast.
mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Skai
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 23.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2011, 15:35     Titel:
  Antworten mit Zitat      
ja mit nem bisschen code wäre es einfach dir nen Lösungsvorschlag zu geben, aber wenn ich es richtig verstanden hab kannst du doch pro Schleifendurchlauf deinen "Zischenspeicher-Vektor" in eine Matrix speichern ( die du vor der Schleife erstellt hast, um Laufzeit zu sparen) und dann nach Schleifenende diese Matrix mit xlswrite an bzw. in einer beliebigen Zelle reinschreiben lassen.
So hättest du pro Schleifendurchlauf 1 Zeile in Excel
_________________

Grüße Skai
Private Nachricht senden Benutzer-Profile anzeigen
 
Klausi24
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 20.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2011, 16:04     Titel:
  Antworten mit Zitat      
Code könnte folgendermaßen aussehen:
Code:

a=0;   % Laufvariable
c=zeros(1,n); % Nullvektor      

%Beginn For- Schleife

for a=1:1:n;  

b=x+y % irgendwelche aufbauende Berechnungen
c(a)=b; % die Berechnungen werden in den Vektor c reingeschrieben.

end % Forschleife beendet

xlswrite('Daten.xls',c(a),'Tabelle1','A1:A20000');  
 


Das funktioniert nicht! Hilft das?
Private Nachricht senden Benutzer-Profile anzeigen
 
Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2011, 16:18     Titel:
  Antworten mit Zitat      
Hi,
ich glaube ich weiß jetzt wo dein Fehler liegt.
Also erstens hast du in dem Codebeispiel c(a) geschrieben. Ich gehe jedoch davon aus, dass dies nur ein Flüchtigkeitsfehler war und du nur c schreiben wolltest.
Der eigentliche Fehler liegt in dem Zeilenvektor c, welchen du als Spaltenvektor abspeichern willst! Um es einfach zu machen: schreibe einfach mal c.' bei xlswrite.
mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Skai
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 23.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2011, 16:56     Titel:
  Antworten mit Zitat      
also ich würde in der schleife folgendermaßen vorgehen:


Code:

b=x+y % irgendwelche aufbauende Berechnungen
c(a,1)=b; % in Vektor c in eine Zeile geschrieben .
 



so wird bei jedem Schleifenaufruf in eine neue Zeile von c geschrieben....

Ps. poste doch mal die konkrete Fehlermeldung
_________________

Grüße Skai
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: 04.03.2013, 09:52     Titel:
  Antworten mit Zitat      
Hallo Skai,
Zitat:
Code:
c(a,1)=b; % in Vektor c in eine Zeile geschrieben

Nein, so wird ein Skalar in einen Spaltenvektor geschrieben. Eine Zeile benötigt:
Code:
c(a, :) = b;


Hallo Klausi24,

Was heißt "der Code könnte so aussehen"? Bitte poste doch genau, wie Dein Code aussieht und eine Kopie der Fehlermeldung. "Das funktioniert nicht" ist nicht klar genug.
Code:

% a=0;   % Laufvariable   % Dies ist überflüssig

c=zeros(1,n); % Nullvektor      
for a=1:n  % 1:1:n ist das gleiche wie 1:n, kein Semikolon hinter FOR
  b = x + y;
  c(a) = b;  % Welche Dimension hat b hier?
end
xlswrite('Daten.xls', c, 'Tabelle1', sprintf('A1:A%d', n));  
 

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 04.03.2013, 10:43     Titel:
  Antworten mit Zitat      
Ob nach bald 2 Jahren noch jemand antworten wird? Razz
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: 04.03.2013, 19:07     Titel:
  Antworten mit Zitat      
Hallo Seban,

Zitat:
Ob nach bald 2 Jahren noch jemand antworten wird? :P

Hoppla! Wieso erschien denn dieser Thread in meiner Liste von unbeantworteten Fragen?! Wie schräg.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 04.03.2013, 20:41     Titel:
  Antworten mit Zitat      
Hi,

In http://www.gomatlab.de/viewtopic.php?p=109693 wurde auf diesen Thread hier verwiesen. Aber dass deswegen der alte Thread gepusht wird? Seltsam.

Grüße,
Seban
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.