Katedra Systemów Elektroniki Morskiej
Technika obliczeniowa i symulacyjna (MATLAB)
Projekt 3
1. Cel zadania:
Nabycie umiejętności wykorzystania programu MATLAB do rozwiązywania zagadnień z zakresu obliczeń numerycznych dla rzeczywistych sygnałów w czasie.
2. Zadanie:
Napisać skrypt (funkcję) do tworzenia następujących sygnałów w czasie :
1) Sinus o dowolnej częstotliwości (np. 50Hz do 1kHz).
2) Impuls prostokątny 100ms z okresem powtarzania 0.5s
3) Impuls sinusoidalny jak w p.1 kluczowany impulsem prostokątnym jak w p.2
Częstotliwość próbkowania wczytywana z klawiatury (dla prób założyć fp=20kHz).
Następnie, skrypt powinien:
Dokonać prezentacji graficznej wszystkich impulsów (skorzystać z polecenia subplot) należy wyskalować osie x w czasie.
Przeanalizować przejście sygnałów przez układ RC - jak na rys.1
rys.1 Całkujący obwód RC
Do analizy posłużyć się wzorem na napięcie Uwy
Uwy(t)=dt*conv(Uwe(t),k(t)); (1)
gdzie: k(t) jest odpowiedzią impulsową układu opisaną wzorem 2
k(t)= 1/(RC)exp(-t/(R*C)) (2)
Analiza
Zaprezentować graficznie odpowiedź impulsową obwodu:
Przyjąć R i C z przedziału: R<500 2000> , C< 1F 4F>
Dokonać splotu sygnałów 1,2 i 3 z odpowiedzią impulsową r.1 - zaprezentować uzyskane wyniki obliczeń graficznie z wyskalowanymi osiami x w czasie.
Przykład skryptu do obliczania odpowiedzi na pobudzenie impulsem prostokątnym oraz sinusem kluczowanym.
%odpowiedź impulsowa dla sygnału prostokątnego;
clear, close all
fp=20000; % częstotliwość próbkowania
dt=1/fp; %odstęp pomiędzy próbkami
t=0:dt:0.5; %czas
R=1000; C=2e-6; tau=R*C; % elementy obwodu RC
kx=1/tau*exp(-t/tau); %odpowiedź impulsowa
plot(t,kx) % wykres odpowiedzi impulsowej
yk(length(t))=0; %zarezerwowany obszar na sygnał
ti=0:dt:max(t)/5; % przedział czasowy dla sygnału niezerowego
Ug=1 % napięcie pobudzenia
yk(1:length(ti))=Ug;
s1=dt*conv(kx,yk);
plot(t(1:5000),s1(1:5000),'r',t(1:5000),yk(1:5000),'b')
xlabel('t[s]'); ylabel('U[V]');
grid
%odpowiedź układu RC dla pobudzenia sinus kluczowany;
clear, close all
fp=20000; % częstotliwość próbkowania
dt=1/fp; %odstęp pomiędzy próbkami
t=0:dt:0.5; %czas
R=1000; C=2e-5; tau=R*C; % elementy obwodu RC
kx=1/tau*exp(-t/tau); %odpowiedź impulsowa
fs=0.05/tau:0.001/tau:0.35/tau % wybrane częstotliwości sygnału
plot(t,kx) % wykres odpowiedzi impulsowej
yk(length(t))=0; %zarezerwowany obszar na sygnał
ti=0:dt:max(t)/5; % przedział czasowy dla sygnału niezerowego
Ug=1 % napięcie pobudzenia
% pętla konieczna z uwagi na fakt, iż analiza dokonywana jest równocześnie dla fs i f.
for i=1:length(fs)
ys(i,:)=Ug*sin(2*pi*fs(i)*t);
yk(i,1:length(ti))=ys(i,1:length(ti));
s1(i,:)=dt*conv(kx,yk(i,:));
end
plot(t(1:5000),s1(i,1:5000),'r',t(1:5000),yk(i,1:5000),'b')
xlabel('t[s]'); ylabel('U[V]');
grid
figure
mesh(s1(:,1:2000)) % obraz zmian sygnału w funkcji częstotliwości
Uwy
U we
C
R