Verfasst am: 20.01.2010, 14:01
Titel: original signal mit matlab filtern
Hallo,
ich habe ein orginal signal ungefiltert und das möchte ich mit matlab filtern.
ich habe in GUI ein fenster wo das original signal geplottet ist und ich möchte ein gefiltertes signal als zweites fenster haben ,so in der form ,in meiner abbildung.
die filtereinstellungen: filtertyp=bandpass,500khz ,filterordnung=2,oberefreq=44khz,unterefreq=38khz.
das signal ist dargestellt so: in xlabel spannung in v,und ylabel abtastrate in s,die abtastrate 0.002ms mit 2000 samples
ich möchte das signal in zeit bereich schon filtern ,bevor man das signal in den frquenz bereich umwandelet, ist das mit diese angaben möglich?
hier ist der code und noch abbildung für das original
Code:
% --- gefiltertes Signal berechnen und darstellen % wird ausgeführt nach Betätigung Button "Verlauf berechnen" function plotten_Callback(hObject, eventdata, handles) global SPANNUNG SAMPLES ABTAST MESSUNGEN Signalbeginn Signalende
%Abtastrate aus GUI Textfeld holen
abtastman = str2double(get(handles.abtinput,'String'));
ABTAST = abtastman;
% Samplerate aus GUI Textfeld holen
samplerate = str2double(get(handles.sampleinput,'String'));
SAMPLES = samplerate;
% Matrix mit Abtastwerten erstellen
abtastwerte = (1:samplerate)';
abtastrate = (abtastwerte*(abtastman*0.001));
% Anzahl der Messungen bestimmen
anzmessungen = (str2double(get(handles.anzspgtext,'String')))/... (str2double(get(handles.sampleinput,'String')));
MESSUNGEN = anzmessungen;
%-- Signalbeginn (Rauschtoleranz bis 33% des Signalmaximums) % Einschwingvorgang berücksichtigen
einschwing = SAMPLES*0.01;
schwingstart = [];
for n = (0:MESSUNGEN-1) % Maximum und Minimum der Messung bestimmen
Spannungmax = max(SPANNUNG((1+n*SAMPLES)+einschwing:SAMPLES+n*SAMPLES));
Spannungmin = min(SPANNUNG((1+n*SAMPLES)+einschwing:SAMPLES+n*SAMPLES));
% ersten wert finden der grösser als 33% des Maximums % oder kleiner als 33% des Minimums ist
schwingwerte = find(... (SPANNUNG((1+n*SAMPLES)+einschwing:SAMPLES+n*SAMPLES)...
>(Spannungmax*0.33))|...
(SPANNUNG((1+n*SAMPLES)+einschwing:SAMPLES+n*SAMPLES)...
<(Spannungmin*0.33)));
schwingwert = schwingwerte+einschwing;
schwingstart(end+1) = schwingwert(1);
end
schwingstartg = mean(schwingstart);
%tatsächlicher Signalbeginn -0,2ms
Signalbeginn = round(schwingstartg) - round(0.0002/(ABTAST*0.001));
% Signal in GUI ausgeben
signalausgabe = Signalbeginn*ABTAST;
set(handles.sigbeginninput,'String',signalausgabe) % Signalende (Rauschtoleranz bis 33% des Signalmaximums)
schwingende = [];
for n = (0:MESSUNGEN-1) % nur mit positiven Signalspitzen arbeiten [pks,locs] = findpeaks(SPANNUNG(Signalbeginn+n*SAMPLES:SAMPLES+n*SAMPLES));
pksamples = numel(pks);
% Maximum der Messung bestimmen [Umax Upos] = max(pks);
% ersten wert finden der nach dem Maximum kleiner als 33% wird
endwerte = find((pks(Upos:pksamples)<(Umax*0.33)));
endwert = locs(endwerte(1)+Upos)+Signalbeginn;
schwingende(end+1) = endwert;
end
schwingendeg = mean(schwingende);
% tatsächliches Signalende +0,8ms
Signalende = round(schwingendeg) + round(0.0008/(ABTAST*0.001));
% Signalende in GUI ausgeben
signalendausgabe = Signalende*ABTAST;
set(handles.sigendeinput,'String',signalendausgabe)
% Plot ungefiltertes Signal for n = (0:anzmessungen-1)
spgplot = SPANNUNG(1+n*samplerate:samplerate+n*samplerate);
plot(handles.spgverlauf,abtastrate, spgplot, 'Color', [00.70]);
hold on
end hold off
xlabel(handles.spgverlauf,'Abtastrate [s]') ylabel(handles.spgverlauf,'Spannung [V]')
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.