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

Rotationssymmetrische Matrix aus gegebenem Vektor erzeugen

 

blueshark
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 09.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2015, 13:23     Titel: Rotationssymmetrische Matrix aus gegebenem Vektor erzeugen
  Antworten mit Zitat      
Hallo,

ich habe einen Vektor gegeben,
beispielsweise a=[1 2 3 4 3 2 1] und möchte daraus eine Martix erzeugen, welche Rotationssymmetrisch um den mittleren Wert (hier 4) ist.

Wie kann ich hierzu vorgehen? convn(a,a') erzeugt mir nur die um 90° gedrehten Werte, nicht jedoch die Zwischenwerte.

Im Voraus vielen Dank.
blueshark
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2015, 16:18     Titel:
  Antworten mit Zitat      
Kannst Du das Beispel a = [1 2 3 2 1] mal von Hand komplett ausrechnen, hier posten und dabei gleich ein bisschen darüber nachdenken, was genau Du willst?
Private Nachricht senden Benutzer-Profile anzeigen
 
blueshark
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 09.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2015, 10:29     Titel:
  Antworten mit Zitat      
ok ich erkläre es noch einmal auf eine etwas andere art und weise.

gegeben ist der vektor v=[1 3 4 3 1] einer radialen Verteilung.

Aus diesem möchte ich nun in eine Matrix M mit der selben radial symmetrischen Verteilung erzeugen. In diesem Falle wäre M
M=[0.1 0.7 1 0.7 0.1
0.7 1.7 3 1.7 0.7
1 3 4 3 1
0.7 1.7 3 1.7 0.7
0.1 0.7 1 0.7 0.1 ].

Ich suche Art und Weise dies mittels vorimplementierter Funktionen in Matlab zu realisieren. Da ich einige dieser Berechnungen auszuführen habe, ist es nicht so "geschickt" beispielsweise für jeden Vektor v einen curve-fit durchzuführen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

jetzt wissen wir aber immer noch nicht, wie die Elemente von M aus den Elementen von v berechnet werden sollen.

Ich hätte es z.B. so versucht
Code:
v = [1 3 4 3 1];
nv = v/max(v);
bsxfun(@times, v, nv')
 

aber das enthält blöderweise nicht die von dir gewünschten Werte.

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 09.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2015, 09:35     Titel:
  Antworten mit Zitat      
Hallo Harald,
dankeschön schon mal für die Antwort.

Wenn ich mir die mittels des von Dir hier geposteten Codes erzeuge Matrix nv mit freqz2 plotte, erhalte ich die in Abbildung freqz2_nv dargestellte Funktion. Sie ist also lediglich zur Ebene Xz Symmetrisch.

Was ich suche ist jedoch folgende in der Abbildung freqz2_M dargestellte Matrix mit einer radialen symmetrie. Kann man so etwas irgendwie in Polarkoordinaten lösen?

Um dies zu erhalten brauchte man doch so etwas wie eine interpolierte funktion von v und müsste dann damit die funktionswerte eines gitters berechnen... Allerdings ist mir nicht so ganz klar wie man so etwas letztlich realisieren könnte.

freqz2_M.png
 Beschreibung:
freqz_M. gewünschte Funktion

Download
 Dateiname:  freqz2_M.png
 Dateigröße:  26.19 KB
 Heruntergeladen:  497 mal
freqz2_nv.png
 Beschreibung:
freqz_nv. mit Beispielcode erhalten

Download
 Dateiname:  freqz2_nv.png
 Dateigröße:  25.98 KB
 Heruntergeladen:  497 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

schreib doch mal bitte hin, wie die einzelnen Einträge der Matrix in deinem Beispiel genau errechnet werden sollen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 09.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2015, 15:32     Titel:
  Antworten mit Zitat      
Hier genau ist, das Problem... ich weiß nicht genau wie sich eine solche Transformation berechnet.

Implementiert hab ich die Funktion jetzt so...
So in der Art habe ich mir das auch vorgestellt, leider liefert dies nicht ganz das gewünschte Ergebnis.... das liegt aber vermutlich am curve fit.

Code:

v1 = [1 3 4 3 1];
x1=[0:length(v1)-1];

v=[4 3 1];
x=[0:length(v)-1];
p=polyfit(x,v,1);
f=polyval(p,x);

[x2,y2]=meshgrid(0:2,0:2);
r = sqrt( x2.^2 + y2.^2 )
z=polyval(p,r);


zz1=[ flipud(z(2:end,:)); z ];
zz2=[ fliplr(zz1(:,2:end)) zz1];
M=zz2;
 



Allerdings muss sich eine solche Berechnung doch irgendwie auch direkt in polarkoordinaten durchführen lassen, oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.01.2015, 23:33     Titel:
  Antworten mit Zitat      
Hallo,

wenn du nicht weißt, wie sich eine solche Transformation berechnet, wie hast du dann die Werte ermittelt?
Ist es sinnvoll, eine Regressionsgerade zu bestimmen? Sollte es wenn nicht eine Art Interpolation sein, z.B. interp1 mit 'pchip' als Methode?
Wenn du z.B. surf zur Visualisierung verwenden willst, wird dir nichts anderes als kartesische Koordinaten als Endergebnis bleiben. Es gibt zwar Konvertierungsfunktionen wie cart2pol, aber ich denke mal, dass das hier nicht das Problem ist.

Grüße,
Harald
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 - 2024 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.