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

Matrizenzuordnung

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2012, 13:57     Titel: Matrizenzuordnung
  Antworten mit Zitat      
hallo zusammen!

Ich bin schon richtig am verzweifeln, weil ich einfach nicht mehr weiterkomme.

Folgendes Problem: Ich habe ein 1x15 Cell (A), das vektoren der länge 1x180 enthält. Und ich habe ein zweites 1x15 Cel (R), das Matrizen der Größe 200x180 enthält. Ich soll jetzt die Werte einander zuordnen. Also alle Werte von R für die gilt, dass A = 0 ist, sollen zusammengefügt werden, alle Werte für die gilt, dass A = 5 ist, sollen zusammengefügt werden und so weiter. Ich habe leider überhaupt keine ahnung, wie ich das angehen soll.

Wäre toll, wenn ihr mir ein paar tipps geben könnt, wie ich das realisieren kann. Leider habe ich beim Googlen nichts gefunden.

Danke schonmal.
MFG


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 12.08.2012, 23:58     Titel:
  Antworten mit Zitat      
Hallo die Problemstellung ist nicht ganz klar. Bitte an einem Beispiel erläutern
was heißt hier A=0? A ist doch Cell mit 15 Vektoren?
Vielleicht meinst so was:
Suche nach 0:
Code:

M=cell(1,length(A))
for k=1:length(A)
   M{k}  =  R{k}(A{k}==0)
end
 


Erweiterung für die Suche nach Werten zw 0 und 5:

Code:

V=cell(1,6)
for n=0:5
  M=cell(1,length(A))
  for k=1:length(A)
     M{k}  =  R{k}(A{k}==n)
   end
   V{n+1}=[M{:}]
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2012, 05:50     Titel:
  Antworten mit Zitat      
Danke für die Antwort. Ich probier, dass problem noch mal zu erklären:

Wie gesagt, ich habe ein 1x15 Cell (A)und die darin enthaltenen Werte laufen von 0 bis 180. Ich möchte jetzt die werte der Matrizen (200x180) (B), die im zweiten 1x15 cell enthalten sind, den werten vom ersten cell zuordnen. Also, in jedem der 15 CellArrays in A sind die Werte 0 bis 180 enthalten und ich möchte jetzt jedem Wert den dazugehörigen Wert aus den Matrizen von meinen 15 Cells aus B zuordnen.

Probiert hab ich das folgenderweise:

Code:

for i = 1:length(A) %für die 15 Cells
for j = 1:359; %Schleife zum durchlaufen der 360 werte, die in den vektoren der Cells enthalten ist
B_sort = B{i} (A{i} == j)
end
end
 


das funktioniert leider nicht.
Vielleicht habt ihr noch einen tipp für mich.
Danke,
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 13.08.2012, 08:29     Titel:
  Antworten mit Zitat      
Eventuell schreibst du uns kurz mal ein Beispiel auf. Verstehe deine Problemstellung noch nicht so ganz.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 13.08.2012, 17:39     Titel:
  Antworten mit Zitat      
Hallo
Willst du die kompletten Spalten aus Matrix übernehmen?
versuch dann mal so:
Code:

for i = 1:length(A) %für die 15 Cells
  for j = 1:359; %Schleife zum durchlaufen der 360 werte, die in den vektoren der Cells enthalten ist
    B_sort = B{i} (:,A{i} == j)
  end
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2012, 20:06     Titel:
  Antworten mit Zitat      
hey zusammen!

genau, ich will die komplette matrix durchsuchen und die bestimmten werte dann A zuordnen.

ich hab eure tipps mal durchprobiert und habe jetzt folgende schleife.
Jetzt ergibt sich jedoch ein weiteres problem, die werte in A sind nicht immer gleich, darum müsste ich eine bedingung stellen. ich habe probiert, dass ebenfalls in die schleife miteinfließen zulassen:

Code:


V=cell(1,36)
for n=0:359
    for m = 1:360
  M=cell(1,length(A))
  for k=1:length(A)
     M{k}  =  R{k}(:,(A{k} > n &  A{k} < m));
   end
   V{n+1, m}=[M{:}];
end
end
 


Ich möchte, dass R alle Werte nimmt, in denen A zwischen n und m liegt. und diese laufen von 0 bis 360, also zB. will ich M{1} die A-werte zuweisen, die zwischen 0 und 1 liegen, M{2} die Werte, die zwischen 1 und 2 liegen und so weiter.

Wenn ich meine formel jedoch so schreibe, bekomme ich folgende fehlermeldung:

Error using ==> horzcat
Out of memory. Type HELP MEMORY for your options.

Error in ==>
V{n+1, m}=[M{:}];

Irgendwie will das ganze nicht so richtig funktionieren, bin sehr dankbar für eure hilfe.

MFG
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 14.08.2012, 14:51     Titel:
  Antworten mit Zitat      
Zitat:
Ich möchte, dass R alle Werte nimmt, in denen A zwischen n und m liegt. und diese laufen von 0 bis 360, also zB. will ich M{1} die A-werte zuweisen, die zwischen 0 und 1 liegen, M{2} die Werte, die zwischen 1 und 2 liegen und so weiter.


Dann kannst du dir eine Schleife sparen. Außerdem vervielfältigst du die Matrix unnötig, was zum Out of Memory führt

Code:


V=cell(1,360)
for n=1:360
  M=cell(1,length(A))
  for k=1:length(A)
     M{k}  =  R{k}(:,(A{k} > n-1 &  A{k} < n));
   end
   V{m}=[M{:}];
end
 
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.