Frage zu MatLab, bin MatLab Anfänger

Neue Frage »

Guennikolode Auf diesen Beitrag antworten »
Frage zu MatLab, bin MatLab Anfänger
Hallo!

Wir machen gerade im Gegenstand med. Bildverarbeitung die Grundlagen (2D Fourietransformation, etc.) und haben die Aufgabe bekommen das Gelernte in dem Programm MatLab zu verwirklichen. Ich bin bereits ein guter Programmierer aber habe noch Probleme von der C++ Denkweise in die MatLab Matrizendenkweise zu kommen. Mir ist hier der mathematische Sichtweise/Exaktheit weniger wichtig, mehr die Syntaktische, aber da ich kein MatLab Forum gefunden habe probier ichs mal hier und hoffe das Ihr mir weiterhelfen könnt:

Schreiben Sie eine Funktion "linearHarmonic2D(vImageSize, Orientation, Frequency, Phase, Magnitude)" mit welcher sie eine einzelne linear orientierte 2D harmonische Schwingung erzeugen können. Einstellbar sollte sein: Ausgangsbildgröße, Orietierung, Frequenz, Phase, Amplitude. Verwenden Sie zwei unterschiedliche Ansätze:
- Eine Superposition von komplexen Schwingungen (exp())
- Reelle Funktion (zB cos)

Ich habe zwar eine Lösung gefunden aber die ist aus 2 Gründen extrem schlecht:
- Sie verwendet for Schleifen welche bei MatLab zu langen Wartezeiten führt, dies sollte man irgendwie in Matrizen formulieren, aber wie!?!
- Sie funktioniert nur für eine Orientierung ungleich x*pi/2 (x...ganze Zahl)

Hier die Lösung:

function [mI] = linearHarmonic2D(vImageSize, Orientation, Frequency, Phase, Magnitude)

Lr=1/Frequency %Periodendauer
Ly=sin(Orientation)*Lr
Lx=cos(Orientation)*Lr

u=1/Lx %Ortsfrequenz in x und y Richtung
v=1/Ly

C=meshgrid(1:vImageSize(1),1:vImageSize(2)) %Matrix

for CntX=1:vImageSize(1)
for CntY=1:vImageSize(2)
C(CntY,CntX)=Magnitude * cos(2*pi * (u*CntX+v*CntY) - Phase);
end
end

mI=imagesc(vImageSize(1),vImageSize(2),C)


Wäre für eine Hilfestellung sehr dankbar, oder für einen guten Link für absolute Anfänger, wo man nicht gleich anhand irgendwelcher Algorithmen Bakterien von Viren unterscheidet.
Danke im Vorraus
nschlange Auf diesen Beitrag antworten »
RE: Frage zu MatLab, bin MatLab Anfänger
Hi,

erstmal zur Orientrierung:
Du teilst durch Lx und Ly, das geht natürlich nur wenn die
nicht 0 sind.
Vielleicht kann man eine Fallunterscheidung machen...

Zu den Schleifen muss ich noch überlegen.

mfg
nschlange
Dual Space Auf diesen Beitrag antworten »
RE: Frage zu MatLab, bin MatLab Anfänger
Bei jeder for-Schleife arbeitest du dich doch durch einen Vektor, oder eine Matrix. Häufig kann man eine for-Schleife halt als Matrixoperation schreiben, was man dann auch machen sollte. Augenzwinkern
Chris2005 Auf diesen Beitrag antworten »

Gibt es eigentlich einen Befehl, einen speziellen Punkt der mit Matlab geplottet wurde (in meinem Fall das Maximum einer Funktion) besonders hervorzuheben (mit einem Sternchen oder so)?

danke, mfg Chris
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »