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

Matrix aus Vektor erstellen?

 

AK79
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 10.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2009, 17:37     Titel: Matrix aus Vektor erstellen?
  Antworten mit Zitat      
Hallo Leute!
Bin sowohl hier wie im MATLAB neu. Meine Frage wird sicherlich einige von euch amüsieren, aber ich kriegs einfach nicht hin und kann es nirgendwo nachlesen Crying or Very sad

Das Problem an sich ist recht einfach:
Ich habe verschiedene Spaltenvektoren, aus denen ich eine Matrix erstellen möchte.
Hier zur Verdeutlichung:
a1=[1;5;6];
a2=[2;4;6];
a3=[3;7;8];
a4=[0;3;8];
Die Matrix M soll nun so aussehen:
M=[1 2 3 0; 5 4 7 3; 6 6 8 8];

Also, die jeweiligen Vektoren bilden jeweils die Spalten der Matrix. Vektor a1=1.Spalte, a2=2.Spalte usw.

Ich hoffe, ich habe mich verständlich ausgedrückt Smile
Bitte nicht steinigen für solch einfache Frage, aber wie gesagt, ich kanns nirgends nachlesen...
Um die Suchfunktion hier habe ich mich bemüht. Leider ohne Erfolg.

Vielen dank im voraus!

AK
Private Nachricht senden Benutzer-Profile anzeigen


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 10.11.2009, 17:57     Titel:
  Antworten mit Zitat      
Hallo AK,

das geht so:

Code:
M = [a1,a2,a3,a4];


Das Stichwort in der Hilfe wäre hier "Concatenating". Und gesteinigt wird hier niemand. Smile

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
AK79
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 10.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2009, 18:19     Titel:
  Antworten mit Zitat      
Vielen Dank erstmal, Bijick!

Das funktioniert soweit, wenn die Anzahl der Vektoren klein ist.
Wenn ich aber größere Anzahl an Vektoren habe, erscheint mir dies als umständlich Embarassed
Also, wenn ich z.B. 100 Vektoren habe? Rolling Eyes
Es ist so: die anzahl der Vektoren ist mir bekannt. Die Vektoren an sich auch. Kann man das irgendwie automatiesieren/vereinfachen?
So, dass man sagt: Erstelle eine Matrix M[zeile,spalte]=xyz;
Hier z.B. mein Entwurf:
Code:

%Entwurf;
w=hann(14);
%Zählschleife für Spaltenvektoren
for z=1:numel(w)-4;
%Teilvektor aus den Werten des Vektors w
     a=w(z:z+4);
%Bilden der Matrix M[zeile, spalte]      
     for s=1:8
        M(z,s)=4;
      end;
end;
disp(M);
 


Hier weise ich der Matrix je einen Wert zu. Das klappt soweit sogut, aber ich habe halt nicht einzelne werte, sondern vektoren, die ich zuweisen möchte.
Könntest du mir hier etwas vorschlagen/helfen? Ist es überhaupt machbar?
Wie gesagt, bei sehr vielen vektoren ist es echt umständlich, jeden per Hand einzugeben (ich habe ca.200 Vektoren) Confused Shocked

Danke nochmals!

Grüße, AK.
Private Nachricht senden Benutzer-Profile anzeigen
 
AK79
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 10.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2009, 18:41     Titel:
  Antworten mit Zitat      
Auf die Gefahr hin, dass ich schon kurz nach anmeldung nerve, hier nochmal Nachtrag. Habe es glaube rausgefunden:
Hier mein Programm-Entwurf:
Code:

w=hann(14);
M=[];
%Zählschleife für Teilvektoren, die aus Vektor w gebildet werden:
for z=1:2:numel(w)-3;
    a=w(z:z+3); %Bildung des Teilvektors
    %Bilden der Matrix M[zeile, spalte]
    M=[M a];
end;
disp(M);
 


Zumindest schaut das jetzt so aus, wie ich es haben wollte Smile
Mein Fehler war wohl, dass ich die Matrix nicht initialisiert hatte.
Zuerst also M=[] definieren und dann je nach werten verändern: M=[M a].

Naja, wieder was dazu gelernt Smile)

Grüße, der nun frohe AK Razz Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 10.11.2009, 19:35     Titel:
  Antworten mit Zitat      
Hallo,
so könntest du das automatisieren:
Code:

var_names = whos('-regexp','a(\d)+');
expr      = sprintf('[%s]',sprintf('%s ',var_names(:).name));
M         = eval(expr) ;
 
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.