Advertisement
osipyonok

lab1_2

Mar 8th, 2017
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 1.37 KB | None | 0 0
  1. clc;
  2. clear;
  3. T = 5;
  4.  
  5. x  = 0:.01:T;
  6.  
  7. [y]  = textread('f6.txt', '%f');
  8.  
  9. N = length(y);
  10.  
  11. z = double(zeros(size(y)));
  12.  
  13.  
  14.  
  15. for k = 1:N
  16.     re = 0.0;
  17.     im = 0.0;
  18.     for m = 1:N
  19.         re = re + y(m) * cos(2 * pi * (k - 1) * (m - 1) / N) / N;
  20.         im = im + y(m) * cos(2 * pi * (k - 1) * (m - 1) / N) / N;
  21.     end
  22.     z(k) = sqrt(re^2 + im^2);
  23. end
  24.  
  25. figure
  26. plot(x, z, 'b')
  27. title('dft')
  28. xlabel('x')
  29. ylabel('|c(x)|')
  30. grid on
  31.  
  32.  
  33. mx = [];
  34. eps = 1e-6;
  35. for k = 2:N/2
  36.     if (z(k) > z(k-1) + eps) && (z(k) > z(k+1) + eps)
  37.         mx(end + 1) = x(k);
  38.     end
  39. end
  40.  
  41. mx
  42.  
  43. M = 4 + numel(mx);
  44. A = zeros(M, M);
  45. B = zeros(M, 1);
  46.  
  47. for k = 1:N
  48.     v = zeros(M);
  49.     t = k / 100;
  50.     v(1) = t^3;
  51.     v(2) = t^2;
  52.     v(3) = t;
  53.     for i = 1:numel(mx)
  54.         v(3 + i) = sin(2 * pi * t * mx(i));
  55.     end
  56.     v(M) = 1.0;
  57.     for i = 1:M
  58.         for j = 1:M
  59.             A(i,j) = A(i,j) + v(i) * v(j);
  60.         end
  61.         B(i) = B(i) + v(i) * y(k);
  62.     end
  63. end
  64.  
  65.  
  66. a = A^(-1)*B;
  67.  
  68. func = zeros(N,1);
  69. for k = 1:N
  70.     v = zeros(M);
  71.     t = k / 100;
  72.     v(1) = t^3;
  73.     v(2) = t^2;
  74.     v(3) = t;
  75.     for i = 1:numel(mx)
  76.         v(3 + i) = sin(2 * pi * t * mx(i));
  77.     end
  78.     v(M) = 1.0;
  79.     for i = 1:M
  80.         func(k) = func(k) + a(i) * v(i);
  81.     end
  82. end
  83.  
  84. figure
  85. plot(x, y, 'r', x, func, 'k')
  86. xlabel('t')
  87. ylabel('y(t)')
  88. title('function')
  89. grid on
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement