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

Vektor aus Matrix lesen

 

try_and_error
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 18.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2010, 23:41     Titel: Vektor aus Matrix lesen
  Antworten mit Zitat      
Hallo,

ich habe eine Schleife programmiert, wo jedes Mal, wenn sie durchlaufen wird, ein Vektor entsteht und dieser am Ende der Schleife jedes Mal grafisch ausgegeben wird. Dann erneut durchlaufen. Bevor die Schleife erneut durchlaufen wird, wird dieser Vektor gelöscht.

Meine Frage:
Ich würde gerne einen langen Vektor erstellen, der alle Vektoren aus der Schleife, die vorher berechnet wurden, enthält.

Vereinfachtes Beispiel:

Code:

for i=1:4
clear vektor;
vektor(i) = i;
end
 


Hier entsteht also 4 mal hintereinander der vektor = (1,2,3,4)

Am Ende will ich also haben:

End_Vektor = (1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4)

Wie mache ich das?
Manchmal sind die Vektoren, die in meinem Beispiel entstehen, unterschiedlich lang, aber das ist ja egal, oder? Der End_vektor soll einfach jedes Mal um den neuen Vektor verlängert werden.

Hat jemand Tipps für mich?

try_and_error
Private Nachricht senden Benutzer-Profile anzeigen


Vito
Forum-Guru

Forum-Guru


Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 19.08.2010, 06:26     Titel:
  Antworten mit Zitat      
Moin,

das macht man ohne Schleife Wink nd zwar so:
Code:

vec = [1 2 3 4];
vektor = repmat(vec,1,4)
 

Gruß,
Vito
Private Nachricht senden Benutzer-Profile anzeigen
 
try_and_error
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 18.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2010, 13:25     Titel:
  Antworten mit Zitat      
Nein, das war ja nur ein vereinfachtes Beispiel, in Wirklichkeit sind die Vektoren natürlich nicht alle gleich, noch nicht mal gleich lang.

Wie kann ich also nach jedem Schleifendurchlauf, den Vektor, den ich erhalte, an einem anderen Vektor "dranhängen", damit der nach jeder Schleife um den letzten Vektor verlängert wird?
Private Nachricht senden Benutzer-Profile anzeigen
 
Vito
Forum-Guru

Forum-Guru


Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 19.08.2010, 13:57     Titel:
  Antworten mit Zitat      
Hi,

schau dir das Bsp an meinst sowas:
Code:

vektor = [1:4];
vektor1 = [1:3];
vektor2 = [1:5];
Vec = {vektor,vektor1,vektor2};
n = length(Vec);

idx = 0
for l = 1:n
    laenge = length(Vec{1,l});
    for k = 1:laenge
        idx = idx + 1;
        vec(idx) = Vec{1,l}(k);
    end
 end
% und vec ist dein Vektor Wink
 


Gruß,
Vito
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.08.2010, 14:07     Titel:
  Antworten mit Zitat      
Hallo

@Vito
man kann es noch einfacher machen:

Code:

vektor   = [1:4];
vektor1 = [1:3];
vektor2 = [1:5];
vec       = horzcat(vektor, vektor1, vektor2 )
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Vito
Forum-Guru

Forum-Guru


Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 19.08.2010, 14:20     Titel:
  Antworten mit Zitat      
Hi,

@ denny:
hab die ganze Zeit danach gesucht, bin aber einfach nicht drauf gekommen. Gehe Kaffee trinken, um akku zu laden Very Happy

Gruß,
Vito
Private Nachricht senden Benutzer-Profile anzeigen
 
try_and_error
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 18.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2010, 14:26     Titel:
  Antworten mit Zitat      
Eigentlich ist es das. Aber meine Vektoren entstehen erst innerhalb jedes Schleifendurchlaufs.

Ich stell mir das so vor:

Code:

for i=1:10
clear vec
(jetzt wird vektor vec berechnet)
vektor_gesamt = vec    % also dass vektor_gesamt den Vektor vec enthält und später werden hier andere vektoren weiter drangehangen
end
 


Danach wird die Schleife also erneut durchlaufen, es entsteht ein neuer Vektor vec, der wieder einfach hinter dem 1. Vektor vec (der schon in vektor_gesamt drin steht) drangehangen werden soll. Also verlängert sich vektor_gesamt in jedem Schleifendurchlauf um den Vektor vec. Es steht vorher allerdings noch nicht fest, wie vec aussehen wird.

Ich hoffe, ich drücke mich verständlich aus Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 19.08.2010, 14:34     Titel:
  Antworten mit Zitat      
Entgegen jeden guten Programmierstils:

Code:

vec=[];

for k=1:4

m=rand(1,5);
vec=[vec m]; % wir hängen einfach immer den Vektor m an den bestehenden Vektor

end

 

_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 19.08.2010, 14:35     Titel:
  Antworten mit Zitat      
Hi

so vlt ?
Code:


vektor_gesamt=[];   % leer
for i=1:10
clear vec
(jetzt wird vektor vec berechnet)
vektor_gesamt =[vektor_gesamt vec] % jedes mal anhängen
end
 


unter annahme vec ist zeilenvektor.

gruss

PS: diesmal war nix mit "fast Fouriers" Wink
_________________

Ein schlechter General ist besser als zwei gute.

Zuletzt bearbeitet von Fourier am 19.08.2010, 14:39, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
try_and_error
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 18.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2010, 14:36     Titel:
  Antworten mit Zitat      
Ah, das sieht doch schon gut aus! So hatte ich mir das gedacht Mr. Green

Wieso ist das so ein schlechter Programmierstil? Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
try_and_error
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 18.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2010, 14:37     Titel:
  Antworten mit Zitat      
@ Fourier

Vielen Dank auch für deine Lösung! Smile
Ja, vec ist immer ein Zeilenvektor.
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 19.08.2010, 14:41     Titel:
  Antworten mit Zitat      
try_and_error hat Folgendes geschrieben:

Wieso ist das so ein schlechter Programmierstil? Wink


Weil du die Länge des Vektors in jedem Schleifendurchgang änderst und ihn desweiteren immer nochmal selbst aufrufst und das frisst einfach unnötig Rechenpower bei entsprechendem Fortschritt in der Schleife.
_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
try_and_error
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 18.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2010, 14:44     Titel:
  Antworten mit Zitat      
Ach so, verstehe, danke Maddy!

Es soll aber eh nur einmalig etwas berechnet werden, von daher ist das in diesem Fall dann nicht so schlimm, denk ich. Danke! Very Happy

try_and_error
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.