Advertisement
osipyonok

lab1

Mar 8th, 2017
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 1.21 KB | None | 0 0
  1. clc;
  2. clear;
  3. T = 5;
  4. x  = 0: .01 : T;
  5. [y]  = textread('f8.txt', '%f');
  6. N = length(y);
  7.  
  8. c = complex(zeros(size(y)));
  9.  
  10. for k = 1:N
  11.     for m = 1:N
  12.         c(k) = c(k) + y(m)*(exp((-1i*2*pi*(k-1)*(m-1)) / N)/N);
  13.     end
  14. end
  15.  
  16.  
  17. z = abs(c);
  18.  
  19. extremums = [];
  20. eps = 1e-5;
  21. for k = 3:N/2
  22.     if (z(k) > z(k-1) + eps) && (z(k) > z(k+1) + eps) && (z(k) > z(k-2) + eps) && (z(k) > z(k + 2) + eps)
  23.         extremums(end + 1) = x(k);
  24.     end
  25. end
  26.  
  27. extremums
  28.  
  29. M = length(extremums) + 4;
  30. A = zeros(M, M);
  31. B = zeros(M, 1);
  32.  
  33.  
  34.  
  35. func = {@(t) t.^3, @(t) t.^2, @(t) t};
  36. for k = 1:length(extremums)
  37.     func(end + 1) =  {@(t) sin(2*pi*extremums(k)*t*100/T)};
  38. end
  39. func(end + 1) = {@(t) 1};
  40.  
  41. for p = 1:M
  42.     for q = 1:M
  43.         for k = 1:N
  44.             A(p,q) = A(p,q) + func{p}(x(k)) * func{q}(x(k));
  45.         end
  46.     end
  47.     for k = 1:N
  48.         B(p) = B(p) + y(k) * func{p}(x(k));
  49.     end
  50. end
  51.  
  52.  
  53. a = A^(-1)*B;
  54.  
  55.  
  56. newY = zeros(N,1);
  57. for k = 1:N
  58.     for i = 1:M
  59.         newY(k) = newY(k) + a(i) * func{i}(x(k));
  60.     end
  61. end
  62.  
  63. figure
  64. plot(x, y, 'r', x, newY, 'k')
  65. xlabel('x')
  66. ylabel('y(x)')
  67. title('Function')
  68. grid on
  69.  
  70. figure
  71. plot(x, z, 'b')
  72. title('DFT')
  73. xlabel('x')
  74. ylabel('|c(x)|')
  75. grid on
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement