Projekt steht nicht zum kostenlosen Download zur Verfügung! Wenn Sie den Softwareteil des Projekts mit den auf der angegebenen Seite beschriebenen Funktionen erwerben möchten, wenden Sie sich an: martinius96@gmail.com
MATLAB Signal Sampling Frequency Period Analog Digital

Signalabtastung - MATLAB


  • Die Signalabtastung ist ein wichtiger Bestandteil des Digitalisierungsprozesses für analoge Signale. Bei guter Abtastung kann das Signal nahezu verlustfrei reduziert werden.
  • Skriptbeschreibung:

  • Ein Zufallszahlengenerator generiert einen Zeitrahmen von 1 bis 10 Sekunden.
  • Erzeugt eine Signalamplitude von 1 - 5 Hz.
  • Das Skript generiert aus diesen Eingabedaten eine zufällige Sequenz, wobei die maximale Häufigkeit berücksichtigt wird.
  • Das ursprüngliche analoge Signal wird in einem Liniendiagramm dargestellt.
  • Das Signal wird mit 2 * fmax, 3 * fmax und 10 * fmax abgetastet.
  • Das Skript berechnet die Abtastfrequenz basierend auf den Abtastfrequenzen.
  • Die Abtastrate bestimmt, wie oft das Signal abgetastet wird. Je niedriger die Zahl, desto besser die Abtastrate.
  • Das abgetastete Signal wird sowohl als Kurve als auch digital mit Abtastpunkten grafisch dargestellt.
  • Die Grafikverarbeitung zeigt die Qualität des abgetasteten Signals im Verhältnis zum ursprünglichen Signal und die Verluste bei einer niedrigeren Abtastrate.
  • Script MATLAB:

    %%Vyhotovil: Martin Chlebovec
    %%Donate: https://paypal.me/chlebovec
    
    close all; %% zatvor figure, okno
    clear all; %% Vymaž premenné a ich hodnoty
    rng shuffle %% náhodný generátor čísel, časový - true random generator
    
    
    tmax = randi([1 10]) %%generuj max. časovu oblasť od do
    t = 0:0.1:tmax; %%vytvor maticove pole
    f_max = randi([1 5]) %%generuj max frekvenciu (amplitúdu)
    
    figure(1) %%vytvor jedno okno pre grafy
    %%generuj nahodnu maticu spojitych signalov (analógový signál)
    signal = (f_max)*rand(1,length(t));
    
    %%podgraf
    subplot(7,1,1)
    %%vykreslenie spojitej krivky zelenej farby (generovaný signál)
    plot(t,signal,'-g');
    title('Náhodne generovaný analógový singál'); %%Nadpis grafu
    xlabel('Čas (s)'); %Popis osi x
    ylabel('Frekv. (Hz)'); %Popis osi y
    hold on
    grid %%hodnoty x a y osí
    f_vzorkovacia = 2*f_max %%vzorkovacia frekvencia 2*fmax
    f_vzorkovacia3 = 3*f_max %%vzorkovacia frekvencia 3*fmax
    f_vzorkovacia10 = 10*f_max %%vzorkovacia frekvencia 10*fmax
    
    T_vzorkovacia = 1/f_vzorkovacia %vzorkovacia perioda pre 2*fmax
    T_vzorkovacia3 = 1/f_vzorkovacia3 %vzorkovacia perioda pre 3*fmax
    T_vzorkovacia10 = 1/f_vzorkovacia10 %vzorkovacia perioda pre 10*fmax
    
    %%vzorkovacie kroky z diskretnej hodnoty 0 - max. casova hodnota signalu
    kroky = 0:T_vzorkovacia:max(t)
    kroky3 = 0:T_vzorkovacia3:max(t)
    kroky10 = 0:T_vzorkovacia10:max(t)
    %%interpolacia - prienik funkcnych hodnot signalu v casovych bodoch periody
    vzorkovanie_body = interp1(t,signal,kroky);
    vzorkovanie_body3 = interp1(t,signal,kroky3);
    vzorkovanie_body10 = interp1(t,signal,kroky10);
    hold on
    
    subplot(7,1,2) %%podgraf
    %%čiarové reprezentácie funkčných hodnôt s bodmi amplitúdy vzorkovania
    stem(kroky,vzorkovanie_body,'Color','b');
    hold on
    %%úsečka opisujúca periódu vzorkovania medzi 2 vzorkovaniami
    plot([kroky(2) kroky(3)],[0 0],'-k','LineWidth',3);
    %%ukončovacie body úsečky so znakmi < --- > pre interval
    scatter(kroky(2),0,'<','k')
    scatter(kroky(3),0,'>','k')
    %%popis úsečky s textom Tvz
    text((kroky(2)/2+kroky(3))/2,-0.3,'Tvz','Color','black', 'Fontsize', 12);
    title('Vzorkovaný signál --> fvz = 2*fmax'); %%nadpis podgrafu
    xlabel('Čas (s)'); %Popis osi x
    ylabel('Frekv. (Hz)'); %Popis osi y
    hold on
    
    subplot(7,1,3) %%podgraf
    plot(kroky,vzorkovanie_body,'-b');
    title('Priebeh vzorkovaného signálu --> fvz = 2*fmax'); %%nadpis podgrafu
    xlabel('Čas (s)'); %Popis osi x
    ylabel('Frekv. (Hz)'); %Popis osi y
    
    subplot(7,1,4) %%podgraf
    stem(kroky3,vzorkovanie_body3,'Color','r');
    hold on
    plot([kroky3(2) kroky3(3)],[0 0],'-k','LineWidth',3);
    scatter(kroky3(2),0,'<','k')
    scatter(kroky3(3),0,'>','k')
    text((kroky3(2)/2+kroky3(3))/2,-0.3,'Tvz','Color','black', 'Fontsize', 12);
    title('Vzorkovaný signál --> fvz = 3*fmax');
    xlabel('Čas (s)'); %Popis osi x
    ylabel('Frekv. (Hz)'); %Popis osi y
    hold on
    
    subplot(7,1,5) %%podgraf
    plot(kroky3,vzorkovanie_body3,'-r'); %vykreslenie spojitej funkcie - krivky
    title('Priebeh vzorkovaného signálu --> fvz = 3*fmax');
    xlabel('Čas (s)'); %Popis osi x
    ylabel('Frekv. (Hz)'); %Popis osi y
    
    
    
    subplot(7,1,6) %%podgraf
    stem(kroky10,vzorkovanie_body10,'Color','k');
    hold on
    plot([kroky10(2) kroky10(3)],[0 0],'-k','LineWidth',3);
    scatter(kroky10(2),0,'<','k')
    scatter(kroky10(3),0,'>','k')
    text((kroky10(2)/2+kroky10(3))/2,-0.3,'Tvz','Color','black', 'Fontsize', 12);
    title('Vzorkovaný signál --> fvz = 10*fmax');
    xlabel('Čas (s)'); %Popis osi x
    ylabel('Frekv. (Hz)'); %Popis osi y
    hold on
    
    subplot(7,1,7) %%podgraf
    plot(kroky10,vzorkovanie_body10,'-k'); %vykreslenie spojitej funkcie - krivky
    title('Priebeh vzorkovaného signálu --> fvz = 10*fmax');
    xlabel('Čas (s)'); %Popis osi x
    ylabel('Frekv. (Hz)'); %Popis osi y