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

Unterschiedliche Anzahl von Werten in eine Matrix

 

retsam
Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2014, 10:50     Titel: Unterschiedliche Anzahl von Werten in eine Matrix
  Antworten mit Zitat      
Hallo zusammen,
ich habe schon versucht eine Lösung zu finden jedoch sitzte ich gerade daran, dass ich mehrere Ergebnisse habe und diese gern in einer Tabelle zusammenfügen möchte.
Code:

Vektor a = [ 1,2,3,4,5]
Vektor a1 = [1,2,3,4,5]
 

Nach dem Durchlaufen einer Schleife erhalte ich folgendes in einen weiteren Vektor.
[code]
Vektor b = [1,2]
Vektor b1 = [1,2]
[code]

Ich würde gerne sowohl Vektor a wie auch b in einer Tabelle Zeilenweise untereinander Schreiben, so dass folgende Matrix entsteht:

1,2,3,4,5
1,2,3,4,5
1,2
1,2
.....

Ist das möglich? Ich habe schon versucht über VertCat, Cat... ich vermute aber, dass bedingt durch die unterschiedlichen Anzahl der Stellen dies nicht möglich ist oder Irre ich mich da?

Greetz und Danke

Ret
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

was Matrizen angeht, liegst du richtig. Du kannst das höchstens mit einem Cell Array machen.
Code:
c = {a; a1; b; b1}

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

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2014, 12:29     Titel:
  Antworten mit Zitat      
Hallo Harald,
vielen dank für die schnelle Antwort.
Wenn ich nun einen Cell Array mit vielen "Spalten" habe, sieht dieser wie folgt aus:
Code:

cellArray1 = [1 16 16 2 15]   [2 19 16]   [3 18 17]   [4 5 20 21][5 5 20 19 5]
cellArray2 = [1 2 4 7 12]   [2 3 12]   [3 2 12]   [4 1 5 12]   [5 1 5 8 11]
 


Für jeden Array habe ich einen Zähler vor die Werte gesetzt... (1,2,3,4...)
Wie bekomme ich es nun hin, dass ich die Zelle 1,1 der beiden CellArrays 1 und 2 zusammen füge und in eine gemeinsame Matrix speicher sowie die größe des Cellarrays heraus bekomme.

Danke & Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 26.02.2014, 13:00     Titel:
  Antworten mit Zitat      
Hallo,

retsam hat Folgendes geschrieben:

Wie bekomme ich es nun hin, dass ich die Zelle 1,1 der beiden CellArrays 1 und 2 zusammen füge und in eine gemeinsame Matrix speicher

Das geht zum Beispiel so:
Code:
M = [cellArray1{1,1};cellArray{1,1}]
M=vertcat(cellArray1{1,1},cellArray2{1,1})



retsam hat Folgendes geschrieben:

sowie die größe des Cellarrays heraus bekomme.

Da bin ich mir nicht sicher, was du meinst. Die Größe eines Cellarrays kriegst du ganz normal mit
Code:
,
falls du aber die Größe der einzelnen Einträge in deiner cell meinst, die kriegst du beispielsweise mit
Code:


Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
retsam
Themenstarter

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2014, 14:43     Titel:
  Antworten mit Zitat      
Hallo,
super vielen lieben Dank.
Nun habe ich dennoch einen kleinen "Denkfehler".
Es liegt folgender Fall vor:

Eine Tabelle:
1,2,3,4,5,6,7
2,3,4,5,6,7,8
5,6,7,7,7,7,7

Im Array1 (A1) liegt ein Zeilen Vektor der Form
Code:

a1 = [1,2,3,4,5,6,7] %Erste Zeile der Tabelle
a2 = [1,2,5] % erste Spalte der Tabelle
 

Ich würde gern die Werte miteinander vergleichen um gemeinsame Werte in eine Tabelle als Positionsdaten aufzunehmen.

Gibt es eine einfache Lösung oder geht dies nur über eine Schleife mit jeweiligem Auslesen der Werte im jeweiligen Array.?

Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.02.2014, 15:56     Titel:
  Antworten mit Zitat      
Hallo,

dafür kannst du intersect (ggf. mit 3 Rückgabeargumenten) verwenden.

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

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2014, 10:22     Titel:
  Antworten mit Zitat      
Guten Morgen,
vielen lieben Dank fr die Hilfe.
Leider habe ich nun noch ein Problem.
Ich versuche gerade einen ausgelesenen Array mit einem Positionswert zu versehen. Dazu würde ich gern folgendes verwenden.
Code:

    CellArray2=XPos{1,j}(1,k);
    CellArray3=CellArray1(1,j);
    CellArray3 = j'.'CellArray3;
 


J wäre der Wert, welcghe die Position angibt.
Leider bekomme ich einen Fehler.

Jemand eine Lösung?

Danke und Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.02.2014, 10:35     Titel:
  Antworten mit Zitat      
Hallo,

was ist XPos, was ist CellArray, und vor allem: was ist die Fehlermeldung?

Bitte immer die Fehlermeldung angeben!

Code:
CellArray3 = j'.'CellArray3;

ist keine gültige MATLAB-Syntax, und mir ist schleierhaft, was es bedeuten soll.

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

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2014, 10:51     Titel:
  Antworten mit Zitat      
Guten Morgen
und danke für die schnelle Rückmeldung.
Ich habe in den Arrays Positionsdaten diese würde ich gerne mit einem Index versehen.
CellArray3 hat den Wert 3 die Variable j hat den Wert 1
Ich möchte das CellArray3 dann wie folgt ausschaut:
1.3 (als Wert) um diesen hinterher mit anderen Werten zu vergleichen.

Bei folgendem Befehl kommt die Fehlermeldung"Unexpected Matlab Expression"
Code:

CellArray3 = j'.'CellArray3;
 


Danke und Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.02.2014, 11:18     Titel:
  Antworten mit Zitat      
Hallo,

in deinem Beispiel ist CellArray3 also kein Cell Array, was eher verwirrend ist.

Das Vorhaben wirkt auf mich etwas merkwürdig. Ginge das?
Code:
j + CellArray3/10


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

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2014, 11:25     Titel:
  Antworten mit Zitat      
Hallo Harald,
entschuldige bitte, jedoch habe ich dies schon versucht.
Bedingt durch die Größe der Matrix ist diese Lösung nicht sehr praktikabel, da ich auch Werte erhalte >100 und es wichtig ist den Index zu erhalten um anhand diesem hinterher Werte miteinander zu vergleichen.

Ich durchsuche die Matrix einmal in x- und einmal in y-Richtung. Dabei habe ich aber unterschiedliche Zählrichtungen und würde diese gern vereinheitlichen. x zählt Zeilenweise, y zählt Spaltenweise. Um nun gleich Zellen wieder zu finden versuche ich diese mit einem Index für die jeweilige Spalte zu versehen.

Ich hoffe meine Problemstellung ist verständlich genug.

Vielen lieben Dank für die schnelle Hilfe..
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Bedingt durch die Größe der Matrix ist diese Lösung nicht sehr praktikabel, da ich auch Werte erhalte >100 und es wichtig ist den Index zu erhalten um anhand diesem hinterher Werte miteinander zu vergleichen.

Das verstehe ich nicht. Bitte ein konkretes Beispiel.

Zitat:
Ich hoffe meine Problemstellung ist verständlich genug.

Leider mir zumindest nicht.

Zitat:
Ich durchsuche die Matrix einmal in x- und einmal in y-Richtung. Dabei habe ich aber unterschiedliche Zählrichtungen und würde diese gern vereinheitlichen. x zählt Zeilenweise, y zählt Spaltenweise. Um nun gleich Zellen wieder zu finden versuche ich diese mit einem Index für die jeweilige Spalte zu versehen.

Auch hierfür bitte ein konkretes Beispiel. Warum müssen die beiden Indizes unbedingt zu einem Wert zusammengefasst werden?

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

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2014, 13:47     Titel:
  Antworten mit Zitat      
Hallo und vielen Dank,

also ich habe folgende Matrix
Code:

5   6   5   5   2
5   17   19   5   2
5   18   17   5   2
5   5   5   5   2
 

Die einzelnen Werte werden einmal in X-Richtung (Zeilenweise) voneinander subtrahiert sowie in Y-Richtung (Spaltenweise).
Oben links in der Ecke ist meine Zeile 1, Spalte 1.
Durch weitere Berechnungen muss ich diese transponieren wodurch die Spalten / Zeilen Nummerierung vertauscht wird.

Für x (Zeilenweise)
1.1 2.1 3.1
1.2 2.2 3.2
1.3 2.3 3.3
.......

Für y (Spaltenweise)
1.1 1.2 1.3
2.1 2.2 2.3
3.1 3.2 3.3
......

Um nun die Matrizen zu indizieren würde ich gern Punkte zwischen den einzelnen Werten haben, denn sobald die Matrix größer wird, wäre durch eine Trennung mit Punkte einfach und übersichtlicher.

Vielen Dank und ein schönes Wochenende.

Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.02.2014, 13:58     Titel:
  Antworten mit Zitat      
Hallo,

und was haben x und y nun mit der ursprünglichen Matrix zu tun bzw. wie ergeben sie sich daraus?

Wenn es nur um die Erstellung solcher Matrizen geht:
Code:
M = bsxfun(@plus, 1.1:0.1:2.1, (0:9)')


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

Forum-Century

Forum-Century


Beiträge: 112
Anmeldedatum: 23.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2014, 11:21     Titel:
  Antworten mit Zitat      
Guten Morgen,
das sind die jeweiligen Spalten mit den dazugehörigen Zeilen.
Vielen lieben Dank für die Rückmeldung.

Zur Sicherheit habe ich noch eine Überprüfungsmatrix eingefügt. In dieser wird an der jeweiligen Stelle eine 1 gesetzt (für x, y Ausrichtung) und beide Matrizen werden miteinander im Anschluss verglichen.

Greetz und vielen Dank

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