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

Gezielt zugreifen: Vektor von Matrizen

 

Anfänger00
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2010, 21:16     Titel: Gezielt zugreifen: Vektor von Matrizen
  Antworten mit Zitat      
Hallo liebe Leute,
ich habe ein großes Problem mit das mich jetzt länger aufhält.
Ich habe einen Vektor W, der aus 4 Elementen besteht, die ihrerseits auch Matrizen darstellen. Ich möchte jetzt gezielt auf die einzelnen Zeilen der Matrizen in dem Vektor zugreifen, aber ich schaff das nicht...

W =

[4x4 double]
[4x4 double]
[4x4 double]
[4x4 double]

W{:,1}

ans =

0.8366 0.7676 0.9924 1.4033
0.8366 0.7676 0.9924 1.4033
0.8366 0.7676 0.9924 1.4033
0.8366 0.7676 0.9924 1.4033


ans =

0.4278 0.6543 1.4715 1.4463
1.7179 1.3845 0.4358 0.4618
1.5684 1.3535 0.5257 0.5525
0.7358 0.9298 1.1642 1.1702


ans =

1.4446 0.9094 0.2405 1.4055
1.3367 1.0890 0.3741 1.2002
0.8199 1.4738 1.1307 0.5756
0.8421 1.4686 1.0927 0.5967


ans =

1.4919 0.6556 0.2442 1.6083
0.6626 1.4814 0.9555 0.9005
0.1454 1.6955 1.9092 0.2500
1.7012 0.4508 0.1416 1.7064

Nun möchte ich die Spalten einer andere Matrix Q(:,i)' mit den transponierten zeilen einer der obigen matrix von V multiplizieren. Wie ist das am besten zu machen? Bei mir klappts einfach nicht...
Ich hoffe mein problem war verständlich
VG
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: 09.10.2010, 01:00     Titel: Re: Gezielt zugreifen: Vektor von Matrizen
  Antworten mit Zitat      
Hallo Anfänger00,

Zitat:
Bei mir klappts einfach nicht...

Dann zeige doch mal, wie Du es versucht hast und welche Fehler aufgetreten sind.

Ich würde auf jeden Fall keine CELLs verwenden, sondern lieber ein 3D-Array. Das macht den Zugriff auf einzelne Sub-Vektoren viel einfacher.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger00
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2010, 12:59     Titel:
  Antworten mit Zitat      
Hallo Jan,
ich habe das Problem jetzt doch gelöst bekommen, hatte wohl einen fehler beim index. Ich greife jetzt so zu:

Code:

for k=n-1:-1:1;
    D=W{k,1};    
    for j=1:m;        
    P= D(j,:)*Q(:,k+1);
 


Ich habe jetzt aber ein anderes Problem:
ich möchte eine Matrix spaltenweise durch einen Vektor teilen.

B =

0.0080 0.0056 0.0076

A =

0.0080 0.0056 0.0076
0.0080 0.0056 0.0076
0.0080 0.0056 0.0076

Dafür formatiere ich erst B um in eine matrix
C=repmat(B,3,1)
und erhalte eine Matrix die mit A identisch ist. Als nächstes muss ich A durch C dividieren und bekomme da als Ergebnis:
Warning: Matrix is singular to working precision.

ans =

NaN NaN NaN
NaN NaN NaN
NaN NaN NaN

Ich versteh nicht wo da das Problem liegt-
Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger00
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2010, 13:06     Titel:
  Antworten mit Zitat      
manchmal hat man ein brett vorm kopf...hab die lösung Smile
A./C
Danke trotzdem
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger00
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2010, 14:07     Titel:
  Antworten mit Zitat      
Das war zu früh gefreut, es klappt in der function leider nicht:
Ich habe jetzt folgende Matrizen:
f =

[3x3 double]
[3x3 double]


g =

[1x3 double]
[1x3 double]


W =

[3x3 double]
[3x3 double]

Dahinter stecken jeweils die Werte:

>> f{:,1}

ans =

0.0079 0.0019 0.0071
0.0079 0.0019 0.0071
0.0079 0.0019 0.0071


ans =

0.0093 0.0069 0.0070
0.0005 0.0019 0.0001
0.0048 0.0066 0.0024

>> g{:,1}

ans =

0.0079 0.0019 0.0071


ans =

0.0049 0.0051 0.0032

>> W{:,1}

ans =

1.0000 0.2359 0.8995
1.0000 0.2359 0.8995
4.2391 1.0000 3.8133


ans =

1.9120 1.4157 1.4384
0.0954 0.4006 0.0219
0.9381 1.2835 0.4635
----------------------------------
Mein Problem ist, dass er eigentlich den spaltenvektor von g in eine Matrix der Dimension von f umwandeln soll und in W soll er mir f/g wieder geben.

folglich müsste die erste Matrix von W nur aus 1 bestehen.

Sieht jemand meinen Fehler?

Mein Code:

Code:

for i=1:n-1
    tempF=f{i,1};
    tempG=g{i,1};
    for j=1:m
        for k=1:m
            C=repmat(tempG,n-1,1);
            tempF(j,k)=tempF(j,k)./C(j);
        end
    end
    W{i,1}=tempF;
end
 


edit by denny: Bitte die Code-Umgebung verwenden. Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger00
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2010, 20:26     Titel:
  Antworten mit Zitat      
*push
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 09.10.2010, 21:19     Titel:
  Antworten mit Zitat      
Hallo,

die ist schon klar das wir Wochenende haben und somit die Wahrscheinlichkeit eine Antwort innerhalb von 6 Stunden zu bekommen beträchtlich geringer ist als in der Woche. Ausserdem werden am WE so 'wenige' Threads erstellt bzw. beatwortet, so dass dein Tread immer noch unter den ersten 5 bleibt. Der push ist wirklich überflüssig...

MFG

Sco
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.10.2010, 19:06     Titel:
  Antworten mit Zitat      
Hallo

ich denke so sollte es hinhauen, kann aber nicht überprüfen.
Code:

for i=1:n-1
    tempF=f{i,1};
    tempG=g{i,1};
    C=repmat(tempG,size(tempF,1),1);
    tempF(j,k)=tempF./C;
    W{i,1}=tempF;
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.