www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - Drehen mit Rotationsmatrix
Drehen mit Rotationsmatrix < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Drehen mit Rotationsmatrix: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 17:50 Do 28.05.2009
Autor: mascht

Aufgabe 1
Berechen Sie die nachfolgend definierte sinct-Funktion für die Teilmenge [-6pi, 6pi]x[-3pi, 3pi] des Definitionsbereichs der Funktion Bei dieser Funktion handelt es sich um eine ins zweidimensionale verallgemeinerte Form der sinc-Funktion des eindimensionalen Falls:

sinctd(p):= 1 .... x=0
sinctd(p):=sin(x)/x ...x!=0
wobei gilt: alle (x,y) = p element aus R²

Stellen Sie den Graph der berechneten sinctd-Funktion zwecks bessern visuellen Verständinsses der Funktion durch von MatLab zur Verfügung gestellte Darstellungsmethoden dar.

Aufgabe 2
Analog der sinctd-Funktion berechnen Sie nachfolgende Fensterfunktion w und visualisiren Sie diese mit den selben Methoden, die Sie für die Darstellung der sinctd-Funktion benutzt haben. Bei den Darstellungen dieser und aller folgender Funktionen sollen die Graphen der Funktion in getrennten Grafiken platziert werden.

wlh(p):= 1 ... |x| <=l und |y|<=h
wlh(p):= 0 ... sonst
wobei gilt: alle (x,y) = p element aus R², l,h element R fest

Die Fensterfunktion w ist ebenfalls für die Teilmenge [-6pi, 6pi]x[-3pi, 3pi] zu berechnen. Hierbei kann zB l=4,5pi und h=2,25pi gesetzt werden. Achtung - Variablen die Funkionen parametrisieren, sollten in Ihren MatLab-Skripts/Funkionen ebenfalls durch Variablen - und nich durch Konstanten - ausgedrückt werden. Bei den Abgabegesprächen kann zB die Berechnung mit anderen - von den hier angeführten Wertebelegungen abweichenden Werten - gefordert werden.

Aufgabe 3
Kombinieren Sie nun die sinctd-Funktion und Fensterfunktion w durch Produktbildung der Funktionswerte der Funktionen wie folgt:

sinctdlh(p):=wlh(p)sinctdt(p)     alle (x,y) = p element aus R², l,h element R fest

Berechnen Sie wieder analog der vorangeggangen Funktion diese neue Funktion sinctdlh und stellen Sie diese wieder zusätzlich zu den anderen Darstellungen dar (Teilmenge/Parameter wie oben).

Aufgabe 4
Abschließend modifizieren wir nun unsere sinctdlh-Funkition, indem wir den Definitionsbereich unserer Funktion einer Rotation unterziehen. Dh durch Einführung dieser Rotation läßt sich die Ausarbeitungsrichtung der Sinusschwingungen der sinctd-Funktion durch den Rotationswinkels alpha festlegen.
Die gewünschte Rotation kann durch die Funktion rot_alpha beschrieben werden.

                                ( cos alpha    - sin alpha )
rot_alpha(p):=(x, y) ( sin alpha    cos alpha   ) alle(x,y)=p elemt R², alpha element R fest

Erweitert man die sinctdlh-Funktion um die vorgeschaltete Rotation des Definitionsbereich von sincdtlh, so gelant man zu nachfolgender Funktion sinctdlhalpha:


sinctdlhalpha(p):=wlh(rot_alpha(p))sinctdt(rot_alpha(p))     alle (x,y) = p element aus R², l,h, alpha element R fest.

Berechnen Sie in bewehrter Weise diese neue Funktion sinctdlhalpha und stellen Sie diese wieder zusätzlich zu den anderen Darstellungen dar(Teilemengen/Parameter wie oben). Achten Sie dabei drauf, dass die Größe der Matrix, die die Werte der Funktion aufnimmt, unabhängig von Rotationswinkels alpha immer die gleiche Größe aufweist. Diese ist immer so groß zu wählen, dass unter jedem beliebigen Rotationswinkel alpha alle Funktionswerte innerhalb des Fensters wlh- dh dort wo wlh(p=1 gilt - in der Matrix vollständig repräsentiert sind und die Anzahl der Matrixelemente mit Werten von 0 minimal sein soll.

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

Lösung Aufgabe 1:

function A = sinctd( xmin,xmax,xsteps,ysteps )
    % ymin und ymax werden nicht benötigt!

X=repmat(linspace(xmin,xmax,xsteps),ysteps,1);
% linspace erzeugt Vecotor mit xsteps zwischen xmin und xmax
% repmat erweitert die ausmaße matrix X mit ysteps  
    
    %noch zur Sicherheit falls irgendwo 0 ist
findNULL=find(X==0);
    A(findNULL)=1;
    
    A=sin(X)./X;

      
end

A = sinctd(-6*pi,6*pi,150,150);
figure, surf(A);

-------------------------------------------------------------------------------------


Lösung Aufgabe 2:

function B = w(xmin,xmax,xsteps,ymin,ymax,ysteps,l,h)

[X,Y] = meshgrid(linspace(xmin,xmax,xsteps), linspace(ymin,ymax,ysteps));
    % linspace erzeugt einen Vecotor mit xsteps zwischen xmin und xmax bzw mit ysteps zwischen ymin und ymax
    % meshgrid transformiert die beiden Vectoren in ein Array mit X Y
    
    % abs(X) liefert den Betrag X
[mm] hoeher_l=find(abs(X)>l); [/mm]
    % find liefert alle Beträge von X die größer als l sind
    
    [mm] hoeher_h=find(abs(Y)>h); [/mm]
    % find liefert alle Beträge von Y die größer als h sind
    
B=ones(ysteps,xsteps);
    % erstellt eine matrix ysteps mal xsteps mit 1er
[mm] B(hoeher_l)=0; [/mm]
    % setzt alle werter über l auf 0
[mm] B(hoeher_h)=0; [/mm]
    % setzt alle werte über h auf 0
    
end

%w
B=w(-6*pi,6*pi,150,-3*pi,3*pi,150,4.5*pi,2.5*pi);
figure, surf(B);

-------------------------------------------------------------------------------------


Lösung Aufgabe 3:

function C = sinctdlh( xmin,xmax,xsteps,ymin,ymax,ysteps,l,h)

  A=sinctd(xmin,xmax,xsteps,ysteps);
  B=w(xmin,xmax,xsteps,ymin,ymax,ysteps,l,h);
  C=B.*A;
  
end

C=sinctdlh(-6*pi,6*pi,150,-3*pi,3*pi,150,4.5*pi,2.25*pi);
figure, surf(C);

-------------------------------------------------------------------------------------


Versuch Aufgabe 4:

function D = sinctdalpha( xmin,xmax,xsteps,ymin,ymax,ysteps,alpha )

% Diagonale berechenen
phyt=sqrt((xmax-xmin)*(xmax-xmin)+(ymax-ymin)*(ymax-ymin));

% Überstehendes bei min max berechnen und neues min max berechnen
drueber=phyt-(xmax-xmin);
   xmin=xmin-drueber/2;
xmax=xmax+drueber/2;
drueber=phyt-(ymax-ymin);
ymin=ymin-drueber/2;
ymax=ymax+drueber/2;

% linspace erzeugt einen Vecotor mit xsteps zwischen xmin und xmax bzw mit ysteps zwischen ymin und ymax
% meshgrid transformiert die beiden Vectoren in ein Array mit X Y  
[X,Y] = meshgrid(linspace(xmin,xmax,xsteps), linspace(ymin,ymax,ysteps));
  
% drehen
TEMP=X*cos(alpha)-Y*sin(alpha);
    
    % bearbeiten
nuller=find(TEMP==0);
TEMP(nuller)=1;
D=sin(TEMP)./TEMP;
D(nuller)=1;
end



function F = walpha(xmin,xmax,xsteps,ymin,ymax,ysteps,l,h,alpha)

    % Diagonale berechenen
phyt=sqrt((xmax-xmin)*(xmax-xmin)+(ymax-ymin)*(ymax-ymin));

% Überstehendes bei min max berechnen und neues min max berechnen
drueber=phyt-(xmax-xmin);
   xmin=xmin-drueber/2;
xmax=xmax+drueber/2;
drueber=phyt-(ymax-ymin);
ymin=ymin-drueber/2;
ymax=ymax+drueber/2;
    
    % linspace erzeugt einen Vecotor mit xsteps zwischen xmin und xmax bzw mit ysteps zwischen ymin und ymax
    % meshgrid transformiert die beiden Vectoren in ein Array mit X Y
    [X,Y] = meshgrid(linspace(xmin,xmax,xsteps), linspace(ymin,ymax,ysteps));
    
    % drehen
    xdrueber=find(abs(X*cos(alpha)-Y*sin(alpha))>l);
    ydrueber=find(abs(X*sin(alpha)+Y*cos(alpha))>h);
    
    % bearbeiten
    F=ones(ysteps,xsteps);
    F(xdrueber)=0;
    F(ydrueber)=0;
  
end





was jedoch laut übungsleiter nicht stimmt bzw zu aufwändig ist, jetzt ist die komplette übungsgruppe planlos und knapp vor der verzweiflung.
Ich wär für eine Lösung sehr dankbar!

lg
martin

        
Bezug
Drehen mit Rotationsmatrix: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:20 Fr 05.06.2009
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]