This is an old revision of the document!
La curs am discutat despre semnale de bază şi sisteme. În continuare vom face câteva exerciţii legate de aceste noţiuni.
Pentru a transmite simboluri (ex: litere din alfabet) modemurile PC-urilor folosesc două frecvenţe (1600 Hz şi 1800 Hz) şi mai multe niveluri de amplitudine. O transmisiune se face într-o perioadă de timp T (interval de transmisie) şi este egală cu suma a două semnale de amplitudine diferită:
x(t) = A1 * sin (2*pi*f1*t) + A2 * sin (2*pi*f2*t)
La curs am văzut că putem descompune semnalele într-o sumă de mai multe semnale de bază (ramp, step etc.). Pentru acest exerciţiu veţi încerca să folosiţi semnalele 'step' şi 'ramp' pentru a crea semnalul reprezentat cu negru în acest slide: building_signals.pdf
Pentru a face asta în Matlab va trebui să lucrăm cu semnale discrete, nu continue (vom discuta despre acest aspect în cursurile viitoare). În loc să lucrăm cu semnale reprezentate in intervalul [0,1] ca în slide vom folosi semnale ce se întind peste 100 de puncte.
Puteţi folosi următoarea funcţie pentru a crea un semnal 'ramp' peste N puncte:
function y=ramp(N) %RAMP Returns a ramp signal of a given number of samples % [y] = RAMP(N) % returns the ramp signal for the given samples y = zeros(1, N); for t=1:N y(t) = t-1; end
Task-ul vostru este să creaţi un semnal combinat, ca cel din slide, dar folosind secvenţe discrete, cu o formulă ca cea de mai jos:
s(i) = r(i) - r(i-T) - T*u(i-T)
unde i este un index de la 0 la N (în loc de un număr real de la 0 la 1), T este întârzierea, s este semnalul rezultat, r este semnalul 'ramp' (eventual întârziat cu T) şi u este semnalul 'unit step' (întârziat aici cu T).
Pentru asta ar trebui să:
x=1:N;
s1 = ramp(N)
[zeros(1,T), s(1:N-T)];
plot(x, s1, 'g-', 'LineWidth', 2);
Pentru a afişa mai multe semnale în aceeaşi figură cu ajutorul comenzii plot puteţi folosi
hold on;
după primul plot:
figure; plot(x, s1, 'g-', 'LineWidth', 2); hold on; plot(...)
Ar trebui să obtineţi ceva similar imaginii de mai jos:
La curs am văzut că datorită identităţilor lui Euler putem scrie o exponenţială complexă ca o sumă de sin şi cos:
$e^{j\cdot t} = \cos(t) + j\cdot \sin(t)$
De asemenea:
$e^{-j \cdot t} = \cos(t) - j \cdot \sin(t)$
Adunând aceste 2 ecuaţii şi împărţind la 2 obţinem:
$\cos(t) = \frac{e^{j \cdot t} + e^{-j \cdot t}}{2}$
Încercaţi să arătaţi asta în Matlab, făcând următoarele:
La curs am văzut un exemplu simplu de un sistem paralel folosit pentru a crea efectul de ecou. Ideea de bază e ca un sistem să replice semnalul de intrare în timp ce un altul îl întârzie. La final cele două sunt adunate.
Task-ul vostru pentru a replica experimentul:
Avem un sistem de feedback precum cel din imaginea urmatoare:
Sa presupunem ca folosim acest sistem pentru sistemul de pilot automat al masinii, unde x(t) este o constanta ce reprezinta viteza dorita iar y(t) este viteza masinii masurata de vitezometru. In aceasta aplicatie sistemul 2 este sistemul identitate (intrare = iesire).
Sa construim acest sistem avand in vedere urmatoarele constrangeri:
Construiti sistemul S1 ca o functie matlab cu 2 parametrii (viteaza_curenta, e), care afiseaza urmatoarea viteza curenta ca mai sus. In Matlab puteti folosi o instructiune for pentru asta:
N = 20; y = zeros(1,N); y(1) = 7; for i=1:N-1 ... y(i+1) = S1(y(i), e(i)); end
Rulati sistemul de N = 20 ori si afisati output-ul sistemului.