Verfasst am: 26.11.2013, 10:32
Titel: Matlab Programmierer und Least Square Verfahren
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);
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
Einstellungen und Berechtigungen
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
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.