Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ps:laboratoare:02 [2017/09/20 16:13]
ionut.gorgos
ps:laboratoare:02 [2020/10/07 18:22] (current)
ionut.gorgos
Line 1: Line 1:
 ===== Laboratorul 02. ===== ===== Laboratorul 02. =====
 +/* <​hidden>​ */
  
 ==== Semnale şi sisteme de bază ==== ==== Semnale şi sisteme de bază ====
Line 13: Line 14:
   - Care este cel mai mic interval de transmisie care are sens să fie folosit cu frecvenţele de mai sus? Cu alte cuvinte, cât ar trebui să fie T astfel încât semnalul să aibă un număr întreg de cicluri? [1p]   - Care este cel mai mic interval de transmisie care are sens să fie folosit cu frecvenţele de mai sus? Cu alte cuvinte, cât ar trebui să fie T astfel încât semnalul să aibă un număr întreg de cicluri? [1p]
   - Afişaţi cu ajutorul Matlab semnalul produs de modem pe parcursul mai multor intervale de transmisie consecutive. Aşa cum am învăţat în laboratorul trecut adăugaţi titlu şi etichete plotului. [1p]   - Afişaţi cu ajutorul Matlab semnalul produs de modem pe parcursul mai multor intervale de transmisie consecutive. Aşa cum am învăţat în laboratorul trecut adăugaţi titlu şi etichete plotului. [1p]
- 
-<​hidden>​ 
-<note tip> 
-Prima frecvenţă este de 1600 = 8 * 200 Hz, iar a doua de 1800 = 9 * 200 Hz. Este clar că amândouă sunt multiple de 200 Hz. Astfel, dacă folosim o frecvenţă de 200 Hz ( T = 1/200 s ), primul semnal va cicla de 8 ori, iar al doilea de 9 ori. De aceea avem nevoie de o perioadă minimă de T = 1/200. 
- 
-Un posibil cod de afişare a semnalului: 
- 
-<code matlab '​sinewaves.m'>​ 
-%% Sinewaves 
-close all; 
-f1 = 1800; 
-f2 = 1600; 
-fm = 200; 
-tm = 1/fm; 
-x = 0:​tm/​100:​tm;​ 
-s1 = sin(2*pi*f1*x);​ 
-s2 = sin(2*pi*f2*x);​ 
-h1 = figure; 
-plot(x, [s1; s2]); 
-xlabel('​Time (s)'); 
-ylabel('​Amplitude'​);​ 
-title('​Two sinewaves'​);​ 
-legend('​1800 Hz', '1600 Hz'); 
-print(h1, '​-dpng',​ '​sines.png'​);​ 
-</​code>​ 
-</​note>​ 
-</​hidden>​ 
  
 === Exerciţiul 2 [2.5p] === === Exerciţiul 2 [2.5p] ===
Line 99: Line 73:
 </​code>​ </​code>​
 </​note>​ </​note>​
-/​*</​hidden>​*/​+ 
  
 Ar trebui să obtineţi ceva similar imaginii de mai jos: Ar trebui să obtineţi ceva similar imaginii de mai jos:
Line 105: Line 80:
 {{:​ps:​laboratoare:​combined_signals.png?​600|}} {{:​ps:​laboratoare:​combined_signals.png?​600|}}
  
-<​hidden>​ 
-<note tip> 
-Acesta este codul pentru funcţia 'unit step': 
- 
-<code matlab ustep.m> 
-function y=ustep(N) 
-%RAMP Returns a step signal of a given number of smaples 
-%   [y] = USTEP(N) 
-%   ​returns the step signal for the given samples 
- 
-y = ones(1, N); 
-</​code>​ 
- 
-Pentru a combina ploturile puteţi folosi următorul cod: 
-<code matlab signal_composition.m>​ 
-N = 200; 
-T = 100; 
-y1 = ramp(N); 
-y2 = [zeros(1,​T),​ -y1(1:​N-T)];​ 
-y3 = ustep(N); 
-y3 = [zeros(1,​T),​ -T*y3(1:​N-T)];​ 
-ys = y1+y2+y3; 
-x = 1:N; 
-s1 = y1(x); 
-s2 = y2(x); 
-s3 = y3(x); 
-ss = s1+s2+s3; 
-h = figure; 
-plot(x, ss, '​k-',​ '​LineWidth',​ 3); 
-hold on; 
-plot(x, s1, '​g-',​ '​LineWidth',​ 2); 
-plot(x, s2, '​b-',​ '​LineWidth',​ 2); 
-plot(x, s3, '​r-',​ '​LineWidth',​ 2); 
-legend('​sum',​ '​r(t)',​ '​-r(t-T)',​ '​-u(t-T)'​);​ 
-print(h1, '​-dpng',​ '​combined_signals.png'​);​ 
-</​code>​ 
-</​note>​ 
-</​hidden>​ 
  
 === Exerciţiul 3 [1p] === === Exerciţiul 3 [1p] ===
  
-La curs am văzut că datorită ​identităţilor ​lui Euler putem scrie o exponenţială complexă ca o sumă de sin şi cos:+La curs am văzut că datorită ​egalității lui Euler putem scrie o exponenţială complexă ca o sumă de sin şi cos:
  
 /* e^(j*t) = cos(t) + j*sin(t) */ /* e^(j*t) = cos(t) + j*sin(t) */
Line 171: Line 108:
   * Afisaţi secvenţa rezultată în imaginar folosid real(ss) ca valori x şi imag(ss) ca valori y   * Afisaţi secvenţa rezultată în imaginar folosid real(ss) ca valori x şi imag(ss) ca valori y
   * Verificaţi dacă s1, s2 şi ss arată cum v-aţi fi aşteptat!   * Verificaţi dacă s1, s2 şi ss arată cum v-aţi fi aşteptat!
- 
-<​hidden>​ 
-<note tip> 
-Acesta este un posibil cod: 
-<code matlab complex_exp.m>​ 
-t = 0:0.1:2*pi; 
-figure; 
-plot(exp(1i*t),​ '​k.'​);​ 
-hold on; 
-plot(0, 0, '​kx'​);​ 
-t = [0, pi/6, pi/4, pi/3, pi/2]; 
-plot(exp(1i*t),​ '​ro'​);​ 
-plot(exp(-1i*t),​ '​bo'​);​ 
-ss = (exp(1i*t)+exp(-1i*t))/​2;​ 
-plot(real(ss),​ imag(ss), '​go'​);​ 
-legend('​circle',​ '​origin',​ '​e^jt',​ '​e^-jt',​ '(e^jt + e-jt)/​2'​);​ 
-</​code>​ 
-</​note>​ 
-</​hidden>​ 
  
 === Exerciţiul 4 [1.5p] === === Exerciţiul 4 [1.5p] ===
  
-La curs am văzut ​un exemplu simplu de 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.+La curs am discutat despre sisteme paralele. Acum vom folosi ​un exemplu simplu de 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:​ Task-ul vostru pentru a replica experimentul:​
   * Având semnalul de intrare cu o voce in fişierul {{:​ps:​laboratoare:​voice.mat|this}}.   * Având semnalul de intrare cu o voce in fişierul {{:​ps:​laboratoare:​voice.mat|this}}.
-  * Faceţi o copie a semnalului şi întârziaţi-o (de ex cu d=500 de eşantioane).+  * Faceţi o copie a semnalului şi întârziaţi-o (de ex cu 0.1 secunde. Trebuie stiut ca semnalul este esantionat cu o frecvență ​de 8000 Hz).
   * Adunaţi cele 2 semnale.   * Adunaţi cele 2 semnale.
   * Ascultaţi semnalul original şi pe cel rezultat pentru a auzi diferenţa. Pentru a asculta semnalele folosiţi funcţia '​sound'​.   * Ascultaţi semnalul original şi pe cel rezultat pentru a auzi diferenţa. Pentru a asculta semnalele folosiţi funcţia '​sound'​.
- 
-<​hidden>​ 
-<note tip> 
-Acesta este un exemplu de rezolvare: 
-<code matlab ecou.m> 
-load('​voice.mat'​);​ 
-sound(y); 
-pause(3); 
-plot(y); 
-l = length(y); 
-d = 500; 
-y2 = zeros(length(y),​ 1); 
-y2(d+1:​end,​1) = y(1:l-d); 
-y3 = y + y2; 
-sound(y3, 8000); 
-figure; 
-plot(1:l, [y';​y2';​y3'​]);​ 
-</​code>​ 
-</​note>​ 
-</​hidden>​ 
  
 === Exerciţiul 5 [3p] === === Exerciţiul 5 [3p] ===
Line 252: Line 150:
 </​code>​ </​code>​
 Rulaţi sistemul de N = 20 ori şi afişaţi outputul sistemului. Rulaţi sistemul de N = 20 ori şi afişaţi outputul sistemului.
-<​hidden>​ 
-<note tip> 
-Un exemplu de soluţie: 
-<code matlab sys1.m> 
-function y=sys1(speed,​ e) 
-%SYS1 Simulates a signal system 
-%   [y] = SYS1(speed, e) 
-%   ​returns the current state (speed) after applying the input e 
  
-if abs(e) > 10 +/* </hidden*/
-    k = 5; +
-else +
-    k = 1; +
-end +
-if e > 0 +
-    y = speed + k; +
-elseif e < 0 +
-    y = speed - k; +
-else +
-    y = speed; +
-end     +
-</code> +
- +
-<code matlab cruise_control.m>​ +
-% Simulate a cruise control system +
-N = 20; +
-y = zeros(1, N); +
-f = zeros(1, N); +
-e = zeros(1, N); +
-x = 60*ones(1,​N);​ +
- +
-y(1) = 7; % Initial speed +
-for i=1:N-1 +
-    e(i) = x(i)-f(i);​ +
-    y(i+1) = sys1(y(i), e(i)); +
-    f(i+1) = y(i+1); +
-end +
- +
-figure; +
-plot(1:N, e, '​r'​);​ +
-hold on; +
-plot(1:N, y, '​g'​);​ +
-legend('​e',​ '​y'​);​ +
-</code> +
-</note> +
-</​hidden>​+
ps/laboratoare/02.1505913215.txt.gz · Last modified: 2017/09/20 16:13 by ionut.gorgos
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0