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

Einen Cell aus mehreren Spalten zusammenbauen

 

PelleLovesPeace
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 30.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2017, 16:19     Titel: Einen Cell aus mehreren Spalten zusammenbauen
  Antworten mit Zitat      
Hallo liebes Forum,

ich habe drei Datensätze vorliegen, mit denen ich gerne später spaltenweise Matrizenrechnung betreiben würde. Dafür muss ich sie allerdings zunächst auch spaltenweise in eine Cell übertragen. Ich möchte allerdings keine 3x100 Cell, sondern die jeweilige Spalte aus einer Variable soll immer mit den anderen 2 Spalten der anderen Variablen zusammenstehen.

Beispielhaft habe ich mal mit diesen Daten losgerechnet:

Code:

x = rand(3,100);
y = rand(3,100);
z = rand(3,100);

Zelle = cell(1,100);

for i = 1 :length(x)
    Zelle{i} = x(:,i)/norm(x(:,i));
    Zelle{i} = y(:,i)/norm(y(:,i));
    Zelle{i} = z(:,i)/norm(y(:,i));
end


Mir ist bewusst, dass in meiner Schleife momentan zwar alle Zellen gefüllt werden, diese aber immer wieder überschrieben werden. Ich suche also nach einer Möglichkeit, in die erste Spalte der Zelle x, in die 2. y und in die dritte z einzutragen.

Ich bin einfach ratlos, wie ich darauf verweisen kann. Ich hatte auch schon an num2cell gedacht, doch auch hier komme ich nicht darauf, wie ich mir dann den Befehl richtig zusammenbaue.

Danke schonmal für jede Hilfe!
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: 08.07.2017, 11:15     Titel: Re: Einen Cell aus mehreren Spalten zusammenbauen
  Antworten mit Zitat      
Hallo PelleLovesPeace,

Zitat:
Ich möchte allerdings keine 3x100 Cell, sondern die jeweilige Spalte aus einer Variable soll immer mit den anderen 2 Spalten der anderen Variablen zusammenstehen.

Das ist noch nicht klar. Was bedeutet "zusammen stehen"? Welche Dimension soll das Ergebnis denn haben?

Vielleicht meinst Du:

Code:
Zelle = cell(3, 100);

for i = 1:length(x)
    Zelle{1, i} = x(:,i)/norm(x(:,i));
    Zelle{2, i} = y(:,i)/norm(y(:,i));
    Zelle{3, i} = z(:,i)/norm(y(:,i));
end

Eigentlich is es aber ein Nachteil so viele gleichartige Vektoren in einem Cell-Array zu speichern. Eine Matrix wäre dafür viel effizienter.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
PelleLovesPeace
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 30.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2017, 15:28     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank schonmal für die Antwort.

Bis zu deinem Vorschlag mit dem cell(3,100) bin ich auch schon gekommen, allerdings ist das leider nicht die Struktur, die ich brauche.

Ich benötige einen cell(1,100), indem jeweils ein 3x3 double steht der sich so ergibt:

[i-te Spalte aus x ; i-te Spalte aus y ; i-te Spalte aus z]

Der Hintergrund ist, dass sich daraus dann mehrere Basen eines Koordinatensystems ergeben, mit denen ich eine Koordinatentransformation rechne.

Ich suche also nach einer Schreibweise um innerhalb einer Zelle drei Spalten nacheinander zu befüllen (aus verschiedenen Ausgangsvariablen). Ich hoffe das ist überhaupt möglich, aber eigentlich kann Matlab ja alles Laughing

Viele Grüße,
PelleLovesPeace
Private Nachricht senden Benutzer-Profile anzeigen
 
Xaratau
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 14.06.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 10.07.2017, 05:48     Titel:
  Antworten mit Zitat      
Na dann berechne das Zwischenergebnis doch einfach und speichere diese Matrix in der Zelle ab:
Code:
Zelle = cell(3, 100);
for i=1:length(x)
zwischenmat=[x(:,i) y(:,i) z(:,i)];
Zelle{i}=zwischenmat;
end
Private Nachricht senden Benutzer-Profile anzeigen
 
PelleLovesPeace
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 30.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2017, 09:03     Titel:
  Antworten mit Zitat      
Hallo,

so funktioniert es natürlich! Very Happy Vielen Dank! So in der Art hatte ich das auch schonmal nur irgend etwas hat da noch nicht gepasst Rolling Eyes . Aber jetzt ist alles paletti.

Vielen Dank!
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.