Forum: Digitale Signalverarbeitung / DSP / Machine Learning Daten zwischen zwei Nulldurchgängen auslesen


von Marcel Götz (Gast)


Lesenswert?

hallo leute...

nachdem ich mir die nulldurchgänge in matlab hab nun anzeigen lassen, 
möchte ich als weiteren schritt die werte zwischen zwei nulldurchgängen 
auslesen lassen.
aber irgendwie find ich keinen ansatz wie ich das anstellen könnte!

ich hoffe mir kann jemand helfen


gruß marcel

von Detlef _. (detlef_a)


Lesenswert?

ähm, was willst Du? Was für zwei Nulldurchgänge, gibts nur zwei?

Nach dem Nulldurchgang ist vor dem Nulldurchgang.

Bißchen mehr info tät's erleichtern.

Cheers
Detlef

von Marcel Götz (Gast)


Lesenswert?

Sorry.....

also ich will dieses amplitudenmodulierte signal rekonstruieren,
dazu möchte ich:
-Nulldurchgänge bestimmen(was schon erfolgt ist)
-Werte jeweils in der Mitte zwischen zwei Nulldurchgängen auslesen
-per Whittaker-Shannon-Interpolationsformel ein glattes Signal
 rekonstruieren.

Das ist in etwa das Prinzip von PLL-Radios (Nulldurchgänge werden da zur 
Frequenzkorrektur verwendet, die kombinierte Wirkung ist dieselbe).

Ist die Amplitude garantiert immer positiv, und die Trägerfrequenz 
wesentlich höher als die höchste Nutzfrequenz, so ist es einfacher, den 
Absolutbetrag vom modulierten Signal zu nehmen und zu glätten. Die 
einfachsten Radios, sogenannte Detektoren, arbeiten so.

gruß marcel

von detlef _a (Gast)


Lesenswert?

Die Stellen, an denen Dein Signal positiv ist, findest Du mit

indp=find(a>0);

Die Intervalle, in denen es positiv ist, findest Du z.B. so:

ind=find(diff(indp>1));

Wenn die Daten in indp 'springen', bist Du an einer Intervallgrenze. 
Deren Indizes stehen in ind.

Gute Nacht
Detlef

von Marcel Götz (Gast)


Lesenswert?

hi detlef...

hab schon paar mal hin und her probiert, aber irgendwie kann ich
indp=find(a>0)
nicht passend einbauen.

hoffe du kannst mir einen tip geben, an welche stelle es müsste



function [xn,yn] = findeNullstellen(t,u_nutz)

t = 0:0.01:2;
f_n = 1;                                 %Frequenzen des Signals
u_n = 1;                                 %Amplitude des Signals
u_t = 1;                                 %Amplitude Trägersignal
f_t = 5;
p = pi/2;                                %Trägerfrequenz, Traegerphase
mod = 0.5;                               %Modulationsindex



u_nutz=u_n*cos(2*pi*f_n*t+p);
u_trag=u_t*cos(2*pi*f_t*t)               %Trägersignal

At_1 =  max(u_nutz)/mod;                 %Amplitude der Trägerschwingung

u_am = (At_1+u_nutz).*cos(2*pi*f_t*t+p); %AM
einhuell_unten =At_1+u_nutz;             %untere Einhüllende
einhuell_oben  =-At_1-u_nutz;            %obere Einhüllende

b = sign(u_nutz);
n = find(b ~= [b(1) b(1: end - 1)]);     %Nullstellen berechnen
xn = t(n);
yn = u_nutz(n);


%Grafik
figure(1);
subplot(2,1,1);
plot(t,u_am,'r',[0;2],[0;0],'black');
hold on;
plot(t,einhuell_unten,'black');
hold on;
plot(t,einhuell_oben,'black');
hold on;
plot(t,u_nutz);
hold on;
grid on;
plot(t,u_nutz,xn,yn,'x');grid on;axis tight
xlabel('t');
ylabel('uam(t)');
title('Amplitudenmoduliertes Signal');



gruß david

von Detlef _. (detlef_a)


Lesenswert?

So?

yn = u_nutz(n);

indp=find(u_nutz>=0);indn=find(u_nutz<0);
plot(1:length(u_nutz),u_nutz,'k.-',indp,u_nutz(indp),'b.',indn,u_nutz(in 
dn),'r.')

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.