Advertisement
felixen98

Untitled

Dec 18th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.59 KB | None | 0 0
  1. % LABORATIONSUPPGIFTER I TSDT18/84 SIGNALER & SYSTEM
  2. % --------------------------------------------------
  3.  
  4. % LÄS NEDANSTÅENDE TEXT INNAN DU BÖRJAR JOBBA MED DATORUPPGIFTERNA!!!!
  5.  
  6. % I detta skript skriver du ned alla funktionsanrop och övrigt som behövs
  7. % för att lösa varje uppgift. Skriptet är indelat i separata celler/sektioner
  8. % med dubbla procenttecken, dvs. %%, där du för varje deluppgift skriver
  9. % in alla relevanta Matlab-anrop i motsvarande cell.
  10. % Vid redovisningen kan du då i editorn enkelt och snabbt exekvera och
  11. % redovisa din matlabkod och relaterade grafer för en deluppgift/cell i taget.
  12.  
  13. % I de fall en graf ska redovisas, t.ex. en signal eller något frekvensspektrum,
  14. % så ska ditt skript generera grafen på det sätt du gjorde när du löste uppgiften.
  15. % Du ska alltså inte redovisa några grafer/figurer i form av fig-filer eller
  16. % utskriva i pappersform. Anledningen till detta är att det ska vara möjligt
  17. % att i efterhand, vid redovisningen, undersöka vad som händer med grafen
  18. % om du justerar någon parameter hos uppgiftens signal eller system - vilket
  19. % assistenten ibland kan be dig att göra.
  20.  
  21. % Tips: Använd gärna funktionen ohfig för att förtydliga en redan ritad graf.
  22. % Funktionen ökar fontstorleken på text och linjetjockleken i graferna i figurfönstret.
  23. %
  24. % Vid behov kan du behöva spara matlab-variabler under labben med save
  25. % (som t.ex. save filnamn.mat A H1 D för att spara variablerna A, H1 och D
  26. % i datafilen filnamn.mat). I ditt skript laddar du sedan in de sparade
  27. % variablerna med load filnamn.mat.
  28.  
  29. % OBS: Senare i labserien, i samband med filterdesign, kommer du att konstruera
  30. % laplacetransformer och z-transformer m.h.a. funktionen pzchange.
  31. % När du redovisar utskrifter av pzchange-grafer, så behöver du i respektive
  32. % cell spara den matlabkod som behövs för att återgenerera pzchange-grafen.
  33. % Då kan du t.ex. även behöva ladda in en transform som du tidigare har
  34. % erhållit och sparat i en mat-fil.
  35. % Då kan du eller assistenten manipulera transformen m.h.a. pzchange vid redovisningen.
  36.  
  37. % Tips: Du kommer ofta att kopiera Matlabkod från kommandofönstret eller
  38. % ?Command History?-fönstret till redovisningsskriptet i editorn.
  39. % Det gör du enklast genom att markera funktionsanropen och sedan dra och
  40. % släppa den markerade texten i editorn.
  41. % I en Linuxmiljö kan du även ändra kortkommandon av typen Ctrl+C och CTRL+V
  42. % för att kopiera respektive klistra in.
  43. % Det gör du under System/Preferences/Keyboard/Shortcuts (tror jag... ;)
  44.  
  45.  
  46.  
  47. %% EXEMPEL PÅ HUR MATALANROP EXEKVERAS I EN CELL/SEKTION
  48.  
  49. % Se även https://se.mathworks.com/help/matlab/matlab_prog/run-sections-of-programs.html
  50.  
  51. % 1) Ställ markören var som helst i den här raden eller raderna strax nedan,
  52. % så att denna cell och alla dess rader gulmarkeras.
  53. % Cellen markeras när du ställer markören på valfri rad i cellen.
  54. %
  55. % 2) I "Editor"-fliken finns avdelningen "RUN". Klicka på knappen
  56. % "Run Section" för att exekvera all Matlabkod i denna cell/sektion.
  57. % Du kan även exekvera cellens Matlabkod genom att trycka Ctrl + Enter
  58. % (CMD + Enter på Mac).
  59.  
  60. % Exempel på matlabkod som exekveras i denna cell/sektion (rita en sinus):
  61.  
  62. t=0:0.1:10;
  63. figure(4)
  64. plot(t,sin(t),'r'),
  65. shg
  66.  
  67.  
  68.  
  69. %% 1. INLEDNING
  70.  
  71. % Ingen uppgift att lösa här. Vi behov behöver du kanske i stället fräscha upp
  72. % dina matlabkunskaper - se i så fall sidan "matlabresurser" på kurswebbsidan!
  73.  
  74.  
  75.  
  76. %% 2. FALTNING
  77.  
  78. % Kopiera dina funktionsanrop hit.
  79. % Dela på lämpligt sätt in dina funktionsanrop i fler delceller, för enklare redovisning!
  80.  
  81. %% 2.1. Studera faltning
  82.  
  83. MS2P4
  84.  
  85. %% 2.2. Jämför Ex1 & Ex2
  86. %% EX 1
  87. MS2P4_mod('1.5*sin(pi*t).*(t>=0&t<1)','1.5*(t>=0&t<1.5)-(t>=2&t<2.5)')
  88.  
  89. %% EX 2
  90. MS2P4_mod('1.5*(t>=0&t<1.5)-(t>=2&t<2.5)','1.5*sin(pi*t).*(t>=0&t<1)')
  91.  
  92. % Ser på bilderna att de är samma tack vare faltningsegenskap
  93.  
  94. %% 2.3. Förskjutet impulssvar
  95.  
  96. % Ex 3
  97. MS2P4_mod('1.5*sin(pi*t).*(t>=0&t<1)','1.5*(t+0.2>=0&t+0.2<1.5)-(t+0.2>=2&t+0.2<2.5)')
  98.  
  99. % Nya utsignalen är förskjuten 0,2 s till vänster
  100.  
  101. % Ex 1 är kausal ty y(t) = 0 då x(t) = 0 för t < 0
  102. % Ex 3 är även den kausal ty y(t0) = 0 då x(t) = 0 för t < t0
  103.  
  104. %% 2.4. Förskjutet impulssvar och förskjuten insignal
  105.  
  106. % Ex 4
  107. MS2P4_mod('1.5*sin(pi*(t-0.5)).*(t-0.5>=0&t-0.5<1)','1.5*(t+0.2>=0&t+0.2<1.5)-(t+0.2>=2&t+0.2<2.5)')
  108.  
  109. % Ser att utsignal är förskjuten 0,3 s åt höger
  110. % Icke-kausal ty utsignal ändras innan insignal,
  111. % uppfyller ej alltså att y(t0) = 0 då x(t) = 0 för t < t0
  112. %% 3. FOURIERSERIEANALYS
  113.  
  114. % Uppgift 3a ? beräkning
  115.  
  116. %% Uppgift 3a ? rita signal & spektrum
  117.  
  118. %% Skapar x(t)
  119.  
  120. % Lägger ihop två signaler ty t >= 0
  121. D = fouser('pulse(t, 0, 1) + pulse((t-7), 0, 1)', 8);
  122. signal(D)
  123. ohfig
  124. %% 3A Räknar ut deltoner
  125.  
  126. pwr(D) % = 0.25, 94% av 0.25 är 0,235
  127. D2 = remtone(D,'lp', 6);
  128. pwr(D2) % = 0.2354
  129. % Detta ger minst 6 deltoner
  130. spect(D2)
  131. ohfig
  132.  
  133. % Första frekvensen f0 = 1/T0 = 1/8 = 0.125
  134. % Alltså måste intervallet för gränsfrekvensen vara [1/8 * 6, 1/8 * 7[
  135.  
  136. %% Släpp igenom så få deltoner som möjligt
  137. D3 = remtone(D,'lp', 1);
  138. signal(D3)
  139. ohfig
  140.  
  141. %% Rita upp båda amplitudsspektrumen
  142. spect(D, D2)
  143. ohfig
  144.  
  145. %% Uppgift 3b
  146.  
  147. for i = 1:30
  148. DB = remtone(D,'lp', i);
  149. signal(DB)
  150. pause(0.2);
  151. end
  152.  
  153. % Ser att högfrekventa signaler har mycket lägre påverkan än vad
  154. % lågfrekventa signaler har. Behöver väldigt många signaler för att
  155. % signalen ska visas som den ska. Ser att signalen hoppar mycket även med
  156. % många frekvenser tillagda och detta beskrivs enligt Gibbs fenomen.
  157.  
  158. %% 4. FOURIERTRANSFORMANALYS
  159.  
  160. % Dela på lämpligt sätt in dina funktionsanrop i fler delceller, för enklare redovisning!
  161.  
  162. % Uppgift 4a
  163.  
  164. %% Rita upp pulsen p(t)=u(t)-u(t-5)
  165.  
  166. p = in('us(t)-us(t-5)','t'); % Skapar pulsen
  167. signal(p);
  168. ohfig();
  169.  
  170. %% Fouriertransormera pulsen och rita upp amplitud- och fasspektrum
  171. P = foutr(p); % Fouriertransformerar pulsen
  172. spect(P); % Ritar upp amplitud- och fasspektrum
  173. ohfig();
  174.  
  175. arg = value(P, 2); % arg(P) från 0 - 2 Hz
  176.  
  177. %% Jämför Sinc:ens toppvärde med fyrkantpulsen
  178. %signal(p);
  179. spectmod(P,'A',5);
  180. ohfig();
  181. %% Uppgift 4b
  182.  
  183. s1 = in('sin(2*pi*200*t)*pulse(t,0,1/5)', 't');
  184. signal(s1)
  185. s2 = in('sin(2*pi*200*t)*pulse(t,0,1/40)', 't');
  186.  
  187. %% Amplitudspektrum S1
  188. S1 = foutr(s1); % Fouriertransformerar pulsen
  189. spectmod(S1,'A',400);
  190.  
  191. %% Amplitudspektrum S2
  192. S2 = foutr(s2); % Fouriertransformerar pulsen
  193. spectmod(S2,'A',400);
  194.  
  195. %% En figur med båda amplitudspektrumen
  196. spect(S1, S2, 400);
  197. subplot(2,1,1), set(gca, 'xlim', [175, 225]);
  198. ohfig
  199.  
  200. %% Uppgift 4c
  201.  
  202. %%soundsc(toner(32768:65536),6400);
  203.  
  204. T1 = foutr(toner); % Fouriertransformerar pulsen
  205. %signal(toner)
  206. spectmod(T1,'A');
  207. ohfig;
  208.  
  209. %% Uppgift 4d
  210.  
  211. %% Bestäm sifferknapp
  212. T2 = foutr(ton);
  213. spectmod(T2, 'A');
  214. %signalmod(ton);
  215.  
  216. %% 5. TIDSKONTINUERLIGA FREKVENSSELEKTIVA FILTER
  217.  
  218. % Dela på lämpligt sätt in dina funktionsanrop i fler delceller, för enklare redovisning!
  219.  
  220. % Uppgift 5a.
  221.  
  222. MS4
  223.  
  224. %% Uppgift 5b
  225. load lab3;
  226. %% Uppgift 5c
  227. load uppgift5c;
  228. pzchange(H3)
  229. %% Uppgift 5d
  230.  
  231. pzchange('s')
  232.  
  233. %% Uppgift 5e
  234.  
  235. %% Butterworth
  236. [B,A] = butter(10, 2*pi*100, 'low', 's');
  237. pzchange(in(B,A,'s'))
  238.  
  239. %% Chebyshev
  240. [B,A] = cheby1(4, 3, 2*pi*100 ,'low', 's');
  241. pzchange(in(B,A,'s'))
  242.  
  243. %% Uppgift 5f
  244. %pzchange('s');
  245. %load(uppgift5f)
  246. %pzchange(uppgift5f)
  247. %pzchange(uppgift5f_better)
  248. X = foutr(toner);
  249. %x = ifoutr(toner);
  250. %signal(toner)
  251.  
  252. Y = output(X, better_filter);
  253. %Y = output(X, Own_filter);
  254. y = ifoutr(Y);
  255.  
  256. signal(y)
  257. %ohfig
  258.  
  259. %spectmod(Y,'A');
  260. %spect(Y)
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267. %% 6. TIDSDOMÄNANALYS AV TIDSDISKRETA SIGNALER & SYSTEM
  268.  
  269. % Dela på lämpligt sätt in dina funktionsanrop i fler delceller, för enklare redovisning!
  270.  
  271. % Uppgift 6a
  272. MS3
  273.  
  274.  
  275. %% Uppgift 6b
  276. CE3_5
  277.  
  278.  
  279. %% Uppgift 6c
  280.  
  281. %edit CE3_5
  282.  
  283. n = -5:19; % Anm: I boken står det (0:19), men från -5 är lämpligare
  284. x = inline('n==0'); % = enhetsimpulsen
  285. a = [1 -0.6 -0.16]; b = [5 0 0];
  286. h = filter(b,a,x(n));
  287. clf; stem(n,h,'k'); xlabel('n'); ylabel('h[n]');
  288.  
  289. %% 6c a)
  290.  
  291. n = -5:19; % Anm: I boken står det (0:19), men från -5 är lämpligare
  292. x = inline('n==0'); % = enhetsimpulsen
  293. a = [1 -1]; b = [0 1];
  294. h = filter(b,a,x(n));
  295. clf; stem(n,h,'k'); xlabel('n'); ylabel('h[n]');
  296.  
  297.  
  298. %% 6c b)
  299.  
  300. n = -5:19; % Anm: I boken står det (0:19), men från -5 är lämpligare
  301. x = inline('n==0'); % = enhetsimpulsen
  302. a = [1 -5 6]; b = [0 8 -19];
  303. h = filter(b,a,x(n));
  304. clf; stem(n,h,'k'); xlabel('n'); ylabel('h[n]');
  305.  
  306. %% 6c d)
  307.  
  308. n = -5:19; % Anm: I boken står det (0:19), men från -5 är lämpligare
  309. x = inline('n==0'); % = enhetsimpulsen
  310. a = 1; b = [2 -2];
  311. h = filter(b,a,x(n));
  312. clf; stem(n,h,'k'); xlabel('n'); ylabel('h[n]');
  313.  
  314. %% Uppgift 6d
  315.  
  316. falta
  317.  
  318. %edit falta
  319.  
  320. % Faltning mellan x[n] och h[n]
  321. % Lasse Alfredsson 2012
  322. n=0:50;
  323. x=inline('2*(n>=5 & n<20)','n'); % x[n]=2(u[n-5]-u[n-20])
  324. h=inline('1*(n>=2 & n<10)','n'); % h[n]=u[n-2]-u[n-10]
  325.  
  326. subplot(2,1,1)
  327. stem(n,x(n),'b');hold on,
  328. stem(n,h(n),'r');hold off
  329. xlabel('n')
  330. title('x[n] (blå) & h[n] (röd)')
  331.  
  332. y=conv(x(n),h(n)); % y[n]=x[n]*h[n] (faltning)
  333. subplot(2,1,2)
  334. stem(n,y(1:length(n))); % Ty length(y) = length(x)+length(h)-1
  335. xlabel('n')
  336. title('y[n]')
  337.  
  338. %% Uppgift 6e 1
  339.  
  340.  
  341. %edit falta
  342.  
  343. % Faltning mellan x[n] och h[n]
  344. % Lasse Alfredsson 2012
  345. n=0:50;
  346. x=inline('2*(n>=5 & n<20)','n'); % x[n]=2(u[n-5]-u[n-20])
  347. h=inline('1*(n>=2 & n<10)','n'); % h[n]=u[n-2]-u[n-10]
  348.  
  349. subplot(2,1,1)
  350. stem(n,x(n - 10),'b');hold on,
  351. stem(n,h(n),'r');hold off
  352. xlabel('n')
  353. title('x[n] (blå) & h[n] (röd)')
  354.  
  355. y=conv(x(n - 10),h(n)); % y[n]=x[n]*h[n] (faltning)
  356. subplot(2,1,2)
  357. stem(n,y(1:length(n))); % Ty length(y) = length(x)+length(h)-1
  358. xlabel('n')
  359. title('y[n]')
  360.  
  361. %% Uppgift 6e 2
  362.  
  363.  
  364. %edit falta
  365.  
  366. % Faltning mellan x[n] och h[n]
  367. % Lasse Alfredsson 2012
  368. n=0:50;
  369. x=inline('cos((pi/6).*n).*(n>=0)','n'); % x[n]=2(u[n-5]-u[n-20])
  370. h=inline('1.5.*((0.95).^n).*(n>=0 & n<11)','n'); % h[n]=u[n-2]-u[n-10]
  371.  
  372. subplot(2,1,1)
  373. stem(n,x(n),'b');hold on,
  374. stem(n,h(n),'r');hold off
  375. xlabel('n')
  376. title('x[n] (blå) & h[n] (röd)')
  377.  
  378. y=conv(x(n),h(n)); % y[n]=x[n]*h[n] (faltning)
  379. subplot(2,1,2)
  380. stem(n,y(1:length(n))); % Ty length(y) = length(x)+length(h)-1
  381. xlabel('n')
  382. title('y[n]')
  383.  
  384.  
  385. %% TIDSDISKRETA FREKVENSSELEKTIVA FILTER
  386.  
  387. % Dela på lämpligt sätt in dina funktionsanrop i fler delceller, för enklare redovisning!
  388.  
  389. % Uppgift 7a
  390.  
  391. %pzchange('z')
  392. load uppgift7a;
  393. pzchange(H1z)
  394.  
  395.  
  396. %% Uppgift 7b
  397.  
  398. load uppgift7b;
  399. pzchange(HA)
  400. %pzchange(HB)
  401.  
  402. %% Uppgift 7c
  403.  
  404.  
  405.  
  406. %% Uppgift 7d
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement