www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 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
Dt. Schulen im Ausland: Mathe-Seiten:

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 ^
www.vorhilfe.de