Daten zwischen zwei Nulldurchgängen auslesen

Gast #433735
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
Gast #433844
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
Gast #434333
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
Gast #434920
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.