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

Bild einer Gaussmode mit Matlab fitten

 

nerdizzle
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 28.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2012, 23:27     Titel: Bild einer Gaussmode mit Matlab fitten
  Antworten mit Zitat      
Hallo werte Forenmitglieder

Ich bin ein Einsteiger in Matlab. Ich habe jedoch ein Problem, welches ich mit Matlab lösen sollte.

Es geht um die Ausmessung eines Laserstrahles. Ich habe ein Bild (siehe Anhang Laserquerschnitt) und möchte dieses mit einer Gaussglocken kurve fitten. Das Ergebnis stelle ich mir vor wie in Anhang "Gauss.png". Ich wäre froh, wenn mir jemand grob erklären könnte, wie ich da vorgehen muss. Einfach damit ich mich orientieren kann, ich sehe sonst den Wald vor lauter Bäume nicht mehr.

Vielen Dank für allfällige Hilfe

Gruss, nerdizzle

Gauss.png
 Beschreibung:
Meine Vorstellung, wie der Fit aussehen sollte

Download
 Dateiname:  Gauss.png
 Dateigröße:  76.72 KB
 Heruntergeladen:  796 mal
682px-Laser_Pointer_gaussian_profile.jpg
 Beschreibung:
Laserquerschnitt

Download
 Dateiname:  682px-Laser_Pointer_gaussian_profile.jpg
 Dateigröße:  90.15 KB
 Heruntergeladen:  737 mal
Private Nachricht senden Benutzer-Profile anzeigen


nerdizzle
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 28.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.04.2012, 12:22     Titel: Rückfrage - LSQCURVEFIT only accepts inputs of data type do
  Antworten mit Zitat      
Code:

%read the image (grayscale)
I = imread('E:\gauss0g.bmp');
%Image I is nxm matrix
[n,m]=size(I);
%x-y coordinates
[X,Y]=meshgrid(1:n,1:m);
% x= first column
x(:,1)=X(:);  
% y= second column
x(:,2)=Y(:);
%data
f = I(:);
%fit function (gauss)
%fun = @(c,x)c(1)*exp(-((x(:,1)-c(2)).^2/c(3).^2)+((x(:,2)-c(4)).^2/c(5).^2));
fun = @(c,x) c(1)+c(2)*exp(-((x(:,1)-c(3))/c(4)).^2-((x(:,2)-c(5))/c(6)).^2);
% solve with lsqcurvefit
options=optimset('TolX',1e-6);
c0=[10 10 10 10 10 10];%start-guess here
cc=lsqcurvefit(fun,c0,x,f,[],[],options);
%fitted gaussian in vector
Ifit=fun(cc,x);  
%gaussian reshaped as matrix
Ifit=reshape(Ifit,[n m]);
surf(X,Y,Ifit)
 

Fehlermeldung:
??? Error using ==> lsqcurvefit at 191
LSQCURVEFIT only accepts inputs of data type double.

Error in ==> gausslsqf at 19
cc=lsqcurvefit(fun,c0,x,f,[],[],options);

Ich gebe zu die erste Frage war etwas unötig. Doch nun weiss ich wirklich nicht weiter. Die Parameter LSQCURVEFIT - Methode sind în der Richtigen Reihenfolge. Danke für eure Hilfe!

cheers
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.