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

Matlab Programmierer und Least Square Verfahren

 

Coriane
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.11.2013, 10:32     Titel: Matlab Programmierer und Least Square Verfahren
  Antworten mit Zitat      
Hallo GoMatlab Lesern(inen),

ich versuche momentan mit einem FFT und Least square Verfahren die Parametern eines Sinus-Signal zu bestimmen. Das programm, das ich selbst geschrieben habe sieht so aus :

Code:
% Das ist mein Programm.
samples = 16000*5;
f = 24*10;
amp = 5;
t = linspace(0,5,samples);
f_toleranz = 2*max(t);
Fs = samples/max(t);
phi0 = rand(1)*pi/2;
x = amp*sin (2*pi*f*t+ phi0);
Y = x + 0.5*randn(1,samples);
[Amplitude,fmin,fmax,signal]= fft_fkt(Y, f_toleranz);
f_fft=linspace(0,Fs/2,samples/2);

figure(2);
plot(f_fft(fmin:fmax),Amplitude(fmin:fmax));
[[amp;f] [Amplitude(fmax-f_toleranz+1); f_fft(fmax-f_toleranz+1)]]


Wie kann ich das Least-Suqare Code (siehe Unten)so umschreiben dass ich ein passendes Ergebnis kriege?

Code:
%Das ist mein Least-Square Programm.
function [P,varx,Fehler_max]=fitting_2D(x,y,m)
%% Erklärung
% Die Funktion wirkt als die Polynomannäherung für 2 Dimension.
% z.B
% y=P(0)+P(1)*x+P(2)*x^2+...+P(m-1)*x^m
%% Anfang und Initial
n=length(x);             %Dimension erfassen
x=reshape(x,n,1);        %x_mess und y_mess könnte Matrix sein. Es ist notwendig, umzuformen.                      
y=reshape(y,n,1);        %x,y müssen in Form Vektor sein.    
B=zeros(n,m+1);
for i=1:1:m+1
x_zw=x.^(i-1);
B(:,i)=x_zw;             %Beobachtungsmatrix aufzustellen
end
%% Least-Square-Verfahren
A=1/det(B'*B);
P=inv(B'*B)*B'*y;        %Least-square Verfahren
%% Bewertung der Polynomannäherung
y_fit=zeros(n,1);          
for i=1:1:m+1
y_fit=y_fit+P(i,1)*x.^(i-1);   %fitting
end
dy=y-y_fit;                 %Abweichung zwischen Messwerten und Annäherungswerten
Fehler_max=max(dy);      %Maximum der Abweichung
varx=0;    
for i=1:1:n
    varx=sqrt(dy(i)^2+varx^2);
end                      %Varianz
plot(x,y,x,y_fit,x,dy)      %Grafik
title('Polynomannäherung 2 Dimension mit Least Square Schätzung')


Ich muss zugeben, dass ich mich ein wenig mit der Programmierung kenne. Ich werde ganz froh sein, wenn ich von Ihnen eine Lösungsansatz bekomme.

Danke für Ihre Aufmerksamkeit.

COriane
_________________

Best Regards
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.