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

Matrixen

 

Aidin
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 04.10.12
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 07.01.2016, 13:38     Titel: Matrixen
  Antworten mit Zitat      
hallo Leute,
ich habe eine recht einfache Frage,

Ich habe ein 20x1 Matrix die von 1 bis 20 geht. "Matriz a"
und eine Matrix b=[1 2]';
nun will ich dass ich einen Funktion schreiben um einen Matrix c zu erstellen die so groß ist wie a und die werte von b beinhaltet also von 10 mal die erst 1 und 10 mal die wert 2 und diese dann als 2 spalte in matrix a einträgt. so dass die matrix a zu 20x2 wird.
danke
Private Nachricht senden Benutzer-Profile anzeigen


ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2016, 14:04     Titel:
  Antworten mit Zitat      
Also - ich hoffe ich verstehe dich richtig:

Code:

A=ones(20,1)  % Matrix mit 20 Zeilen und 1 Spalten
B=[1 2];         % Matrix mit 2 Zeilen und 1 Spalte

C=ones(size(A,1),length(B))  % Matrix mit A-Zeilen und B-Spalten (20x2)
C(:,1)=B(1);
C(:,2)=B(2); % Auffüllen der Matrix

 
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2016, 14:11     Titel:
  Antworten mit Zitat      
Ahhh - jetz hab ich dich glaub ich verstanden:

Code:


A = (1:20)';
B = [1 2];

C = ones(size(A,1),1);
C(1:10) = B(1);
C(11:20) = B(2);

A(:,2) = C;

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Aidin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 04.10.12
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 07.01.2016, 14:34     Titel:
  Antworten mit Zitat      
Hallo Ro_mat
also das ist genau richtig was du das verstanden hast. aber ich bräuchte eh eine Funktion. das sollte nur ein beispiel sein.

mein Hauptproblem ist darin dass ich einen 113725X21 matrix habe und einen 807X1 matrix. Nun will nach oben gefragten prinzib diesen 807X 1 matrix als 22 spalte der großen matrix einfügen. und das geht sehr schwer mit dieser Lösung....

Wäre sehr dankbar wenn du da weiter helfen könntest

Lg
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2016, 14:40     Titel:
  Antworten mit Zitat      
Ja das stimmt, das ist nur schemenhaft ein Beispiel!

Dein Problem ist also, dass deine Matrix die du als 22.Spalte anfügen möchtest, kleiner ist als deine Hauptmatrix!!!

Erklär mir bitte noch mal was in der 22.Spalte an der 808. Stelle stehen muss? Fängt da wieder diese 807*1 Matrix von vorne an?

Oder soll nur die 807*1 Matrix angehängt werden und dann nur mehr Nullen folgen?

[EDITED, Jan, Bitte kein Top-Quoting - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Aidin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 04.10.12
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 07.01.2016, 16:38     Titel:
  Antworten mit Zitat      
Ja das stimmt, das ist nur schemenhaft ein Beispiel!

Dein Problem ist also, dass deine Matrix die du als 22.Spalte anfügen möchtest, kleiner ist als deine Hauptmatrix!!!

Erklär mir bitte noch mal was in der 22.Spalte an der 808. Stelle stehen muss? Fängt da wieder diese 807*1 Matrix von vorne an?

Oder soll nur die 807*1 Matrix angehängt werden und dann nur mehr Nullen folgen?[/quote]

e also es soll wie bei der einfachen Beispiel sein.

Sagen wir der 113725X21 Matrix soll A sein. Und der 807*1 Matrix soll B sein.

Dann soll die ersten x Reihen der 22 Spalte der A Matrix der Zahl der ersten Reihe von B annehmen. Dann die Nächten X Reihen sollen der Zahl der zweite Reihe von B annehmen und so weiter bis alle 113725 Reihen einen Zahl von B Matrix bekommen haben.
Der Zahl X wird von mir angegeben. Zb. die ersten 20 Reihen der A Matrix bekommen den Wert der ersten Reihe von B, dann die Nächten 100 Reihen bekommen den Wert der zweiten Reihe und ....

Ich hoffe ich könnte es gut beschreiben.
Danke dir


[EDITED, Jan, Bitte kein Top-Quoting - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2016, 08:32     Titel:
  Antworten mit Zitat      
Hallo Aidin,

sry musste gestern dann weg! Hast du das Problem bereits gelöst?

Wenn nicht - kannst du mir nur sagen wie du X bestimmen willst? Soll X von Anfang an für alle Werte bestimmt sein, d.h. du weißt von Beginn an das X-Werte den ersten B-Wert haben, dann X-Werte den zweiten B-Wert haben, usw.!

Wenn das so ist dann wäre X eine Zählvariable mit unterschiedlichen Schritten und einer vorher bestimmten Größe!

Ist das so?

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Aidin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 04.10.12
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 08.01.2016, 12:32     Titel:
  Antworten mit Zitat      
Hallo ro-mat
Ist natürlich kein Problem.,
ich habe jetzt auf eine nicht so elegante Lösung mein Problem gelöst aber das ist keine dauerhafte lösung.( nimmt sehr viel zeit in Anspruch und ich muss jedes mal vieles neu machen)

Also wie du gesagt hast ist ist X mit bekannt. und das ist eine Variable.
man könnt es sich so vorstellen dass die Messzeiten unterschiedlich sind. ( in Matrix A "113725X21" würde Teilweise in 60s Takt und Teilweise in 1 S Takt die werte Aufgezeichnet. in Matrix B "807X2" würde nur in 10 minuten Takt werte aufgezeichnet.)
nun mussen halt die werde zusammen gefügt werden.

kurz gesagt. ich kenne die X werte und auch die Plätze wo die geändert werden mussen.
aber da sie mehrmals geändert werden, denke ich es macht sinn diese als Variable einzufügen.
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2016, 12:42     Titel:
  Antworten mit Zitat      
Ja hallo - ja jetzt wirds immer klarer! Nur noch mal mit Zahlenwerten gekürzt:

A = 2 3
4 5
6 7
8 9

B = 1
2

X = 3
1

X besagt das 3 mal der Wert 1 aus B in die dritte Spalte von A kommt und 1 mal der Wert 2 aus B oder?

A wäre dann am Ende

A = 2 3 1
4 5 1
6 7 1
8 9 2

So würde es passen oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
Aidin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 04.10.12
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 08.01.2016, 12:47     Titel:
  Antworten mit Zitat      
Hallo
Ja genau das wäre korrekt.

nur kurze anmerkung was vieleicht noch alles einfacher machen könnte. es bezihet sich auf zeiten. also min. ,sek, ,,

somit sind die wiederholungen viel ofters. zb.hier um x=600 und x= 10. aber am ende ist es genau was du geschrieben hast.
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2016, 13:42     Titel:
  Antworten mit Zitat      
Hallo, ich hab jetz viel getüftelt und was gefunden das funktioniert - obs die einfachste Variante ist weiß ich auch nicht!!

Ich hab zu Beginn eine Hilfsmatrix erstellt die für jeweils die ersten X-zeiten lang mit dem ersten B-Wert gefüllt wird:

Code:

C(1:X(1)) = B(1);
 


Dann lass ich in einer for-Schleife die restlichen B-Werte zu den X-Zeiten hinzufügen:

Code:

for i=2:length(X)

C(length(C)+1:length(C)+X(i)) = B(i);

end

 


Zum Schluss dann C an A anfügen:

Code:

A(:,3)=C;
 


Bei meinen Testläufen hats funktioniert Smile schau mal ob es du für deinen Fall anwenden kannst! Ansonsten wieder melden
Private Nachricht senden Benutzer-Profile anzeigen
 
Aidin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 04.10.12
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 13.01.2016, 09:49     Titel:
  Antworten mit Zitat      
Hallo ro_mat
Sorry ich war Die Tage nicht hier.
also ich habe jetzt das Problem mit mehreren Funktionen Gelöst. aber deine Lösung hat auch funktioniert. Ich danke dir für deine Hilfe

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