Зачем нам нужна выборка по времени для построения стационарного сигнала?

Я новичок в Matlab и обработке сигналов. Я написал приведенный ниже код. что я не мог понять, так это time soecification раздел в начале кода. Я не понимаю, почему нам нужна выборка при указании интервала или продолжительности, я думаю, что достаточно указать что-то вроде следующего:

t = (0: 0.2: 1.0)  for an example,

Зачем мне нужна такая вещь, как выборка для построения графика, например, стационарный сигнал. другой вопрос, этот код дает мне ошибку, говоря paranthesis imbalance как это решить пожалуйста.

Код

%% Time specifications:
  Fs = 8000;                       % samples per second
  dt = 1/Fs;                       % seconds per sample
  StopTime = 1;                    % seconds
  t = (0:dt:StopTime-dt);         % seconds

  x = (10)*cos(2*pi*3*t) ...          
  + (20)*cos(2*pi*6*t  ...  
   + (30)*cos(2*pi*10*t) ...
  + (50)*cos(2*pi*15*t);

  % Plot the signal versus time:
  figure;
  plot(t,x);
  xlabel('time (in seconds)');
  ylabel('Amplitude');
  title('Signal versus Time');
  title('{\bf Periodogram}');

1 ответ

Решение

Потому что мы имеем дело с оцифрованными сигналами. Вы не можете построить бесконечное количество выборок вашего сигнала. Вот почему вам необходимо указать некоторые параметры перед работой с оцифрованными сигналами, например частоту дискретизации. Частота дискретизации дает вам взаимосвязь между вашими индексами выборок и временем, а именно, сколько выборок у вас есть за одну секунду сигнала.

Вы также можете определить свои векторы времени, как вы предложили в начале вашего вопроса, но это намного удобнее, если вы указали частоту дискретизации, с которой ваш сигнал был выбран. Особенно, если вы хотите выполнить некоторую обработку сигнала (см., Например, теорему отсчетов Найквиста), очень важно, чтобы вы знали об ограничениях и свойствах, вытекающих из разных частот отсчетов.

Ваш дисбаланс в скобках исходит от

  x = (10)*cos(2*pi*3*t) ...          
  + (20)*cos(2*pi*6*t)  ...  % <= Missing parenthesis in this line
   + (30)*cos(2*pi*10*t) ...
  + (50)*cos(2*pi*15*t);

РЕДАКТИРОВАТЬ:

Чтобы получить вид "живого сюжета", вы можете изменить свой код построения на что-то вроде этого:

figure;
xlabel('time (in seconds)');
ylabel('Amplitude');
title('Signal versus Time');

h = plot(nan);
for i=1:length(t)
    set(h,'YData', x(1:i), 'XData', t(1:i));
    drawnow
end

EDIT2:

% Time specifications:
Fs = 8000;                       % samples per second
dt = 1/Fs;                       % seconds per sample
StopTime = 1;                    % seconds
t = (0:dt:StopTime-dt);         % seconds

x1 = (10)*cos(2*pi*3*t);
x2 = (20)*cos(2*pi*6*t);
x3 = (30)*cos(2*pi*10*t);
x4 = (50)*cos(2*pi*15*t);

% Plot the signal versus time:
figure;
xlabel('time (in seconds)');
ylabel('Amplitude');
title('Signal versus Time');

h1 = plot(nan, 'r');
hold on
h2 = plot(nan, 'g');
hold on
h3 = plot(nan, 'black');
hold on
h4 = plot(nan, 'b');
hold on
for i=1:length(t)
    set(h1,'YData', x1(1:i), 'XData', t(1:i));
    set(h2,'YData', x2(1:i), 'XData', t(1:i)); 
    set(h3,'YData', x3(1:i), 'XData', t(1:i)); 
    set(h4,'YData', x4(1:i), 'XData', t(1:i)); 
    drawnow
end
Другие вопросы по тегам