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

Berechnung der Einträge einer Matrix variabler Größe

 

Patrick1990
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 25.02.13
Wohnort: Thüringen
Version: 2015b
     Beitrag Verfasst am: 15.10.2015, 14:15     Titel: Berechnung der Einträge einer Matrix variabler Größe
  Antworten mit Zitat      
Hallo,
ich habe eine n\times m-Matrix vorliegen.

Ich möchte nun aus dieser Matrix eine weitere Matrix bilden, die sich wie folgt berechnen soll:

\begin{pmatrix}
<br />
(a_{11}-a_{11}) (a_{11}-a_{21}) \dots (a_{11}-a_{n1})\\
<br />
(a_{21}-a_{11}) (a_{21}-a_{21}) \dots (a_{21}-a_{n1}) \\
<br />
(a_{n1}-a_{11}) (a_{n1}-a_{21}) \dots (a_{n1}-a_{n1})
<br />
\end{pmatrix}

Wie kann man sowas möglichst einfach gestalten?

Vielen Dank.

Zuletzt bearbeitet von Patrick1990 am 15.10.2015, 15:08, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 15.10.2015, 14:20     Titel:
  Antworten mit Zitat      
hilft dir bsxfun
?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Patrick1990
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 25.02.13
Wohnort: Thüringen
Version: 2015b
     Beitrag Verfasst am: 15.10.2015, 14:41     Titel:
  Antworten mit Zitat      
Wenn ich noch wüsste, wie ich dies auf mein Problem zuschneiden könnte? Aus der Beschreibung werde ich leider nicht so schlau.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.10.2015, 14:59     Titel:
  Antworten mit Zitat      
Hallo,

deine Ergebnismatrix legt nahe, dass nur die erste Zeile und erste Spalte der ursprünglichen Matrix verwendet werden. Ist das so beabsichtigt?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 25.02.13
Wohnort: Thüringen
Version: 2015b
     Beitrag Verfasst am: 15.10.2015, 15:09     Titel:
  Antworten mit Zitat      
Hallo Harald,
hatte die Matrix tatsächlich falsch. So Sollte es nun stimmen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

a ist also nur ein Vektor, bzw. es wird nur die erste Spalte verwendet.

Code:


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 25.02.13
Wohnort: Thüringen
Version: 2015b
     Beitrag Verfasst am: 15.10.2015, 15:24     Titel:
  Antworten mit Zitat      
Ok, so gut kenne ich mich mit MATLAB leider noch nicht aus.
Ich kann das ja auch mal mit Werten untermauern. Später möchte ich aber eigentlich dieses für beliebige Wertepaare berechnen können.

Ich habe eine Matrix Z, in der Koordinaten stehen. Zum Test jetzt einmal nur 3 Stück.

Z=\begin{pmatrix}1\,1\\2\,0\\3\,1\end{pmatrix}

Nun möchte ich daraus die Matrix A berechnen.

A=\begin{pmatrix}(1-1) (1-2) (1-3)\\(2-1) (2-2) (2-3)\\(3-1) (3-2) (3-3)\end{pmatrix}

Normalerweise reicht es mit, wenn die Matrix auf zwei Spalten begrenzt ist, die Zeilenanzahl jedoch variabel ist. Je nach dem, wie viele Werte ich eingebe, soll die Matrix A dann berechnet werden
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wozu werden denn die 1, 0, 1 verwendet?

Hast du meinen Vorschlag versucht (nur auf die erste Spalte angewendet)?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 25.02.13
Wohnort: Thüringen
Version: 2015b
     Beitrag Verfasst am: 15.10.2015, 16:20     Titel:
  Antworten mit Zitat      
Die 1 0 1 werden einfach später verrechnet, also derzeit nicht relevant.

Ich bin noch dabei es zu versuchen.


Edit:
Ich bekomme es nicht so hin, wie ich das haben möchte.


Habe jetzt die Lösung, allerdings bekomme ich die folgende Warnung:

Code:

Warning: Rank deficient, rank = 0, tol =  0.000000e+00.
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wie sollen wir dir jetzt weiterhelfen?
Wir wissen weder, was du machst, noch was daran nicht so ist, wie du es möchtest.

Bitte vor allem auch sagen, was dir an dem bsxfun-Ansatz nicht gefällt. Ich kann mir nämlich nicht vorstellen, dass dieser die Warnung erzeugt.

Code:
Z = [ 1 1; 2 0; 3 1];
a = Z(:,1);
bsxfun(@minus, a, a')


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 25.02.13
Wohnort: Thüringen
Version: 2015b
     Beitrag Verfasst am: 15.10.2015, 17:50     Titel:
  Antworten mit Zitat      
Hallo Harald, habe es jetzt auch anders gelöst bekommen. Dennoch vielen Dank.

Jetzt habe ich noch ein weiteres Problem.

Code:

x=linspace(-2,6,1000);

r1=abs(x-Z(1,1));                                                                                      
r2=abs(x-Z(2,1));
r3=abs(x-Z(3,1));

phi1=phi(r1);
phi2=phi(r2);
phi3=phi(r3);

y1=lambda(1)*phi1;
y2=lambda(2)*phi2;
y3=lambda(3)*phi3;

ges=y1+y2+y3;
 


Ich möchte dieses nun auch zusammenfassen und für n Werte nutzen können, anstatt nur für drei. Hatte es jetzt bei r1, r2, r3 schon mit einer Schleife versucht, aber das geht leider nicht so einfach, da das x ja ein Vektor ist.
Die Funktion phi(r) habe ich ausgelagert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.10.2015, 21:51     Titel:
  Antworten mit Zitat      
Hallo,

für die Berechnung der ri sollte wieder der bsxfun - Trick funktionieren. Dann hast du die einzelnen r in einer großen Matrix R.

Je nach der Implementierung von phi kann das vielleicht direkt auf eine Matrix angewendet werden. Ansonsten kann man über die Spalten von R iterieren. Die Multiplikation mit lambda geht wieder mit bsxfun und @times, die Summierung mit sum(..., 2).

Zitat:
habe es jetzt auch anders gelöst bekommen.

Man fragt sich dann halt irgendwo, wozu man Vorschläge macht, wenn sie nicht angenommen werden. Falls du das Problem gelöst hast, bevor du die Antwort gelesen hast, wäre die Bitte, es möglichst bald zu posten, wenn du etwas selbst gelöst hast. Dann braucht man hier ja keine Zeit mehr darauf verwenden.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 25.02.13
Wohnort: Thüringen
Version: 2015b
     Beitrag Verfasst am: 16.10.2015, 08:34     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich hatee die Aufgabe kurz bevor deine Antwort kam gelöst bekommen. So schnell konnte ich nun leider auch nicht schreiben.

Aufgabenteil zwei werte ich nun probieren.
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.