Моделирование гармонического сигнала

ЦОС, обработка видео и изображений в MATLAB\Simulink

Модератор: Admin

Vig
Пользователь
Сообщения: 1
Зарегистрирован: Чт окт 31, 2019 10:45 am

Моделирование гармонического сигнала

Сообщение Vig » Чт окт 31, 2019 11:03 am

Добрый день.
Задача довольно таки простая: построить гармоническую функцию в Matlab.

Код: Выделить всё

clc % очищаем командное окно
clear % удаляем переменные и функции из памяти
f = 10e3; % частота, Гц
A = 1; % амплитуда, В
phi = 0; % начальная фаза
Fs = 20e3; %частота дискретизации, Гц
t = 0:1/Fs:1; % временная ось, одна секунда дискретных значений времени
s = A*cos(2*pi*t*f+phi); % гармонический сигнал
figure(1)
plot(t,s)
title('Косинус')
xlabel('Время, с')
ylabel('Напряжение, В')
xlim([0 1e-3])


Однако результат вышел неожиданный. Функция слабо похожа на косинус. С синусом еще интереснее - совсем не то.
Согласно теореме Котельникова - частота дискретизации должна быть не менее чем в 2 раз выше частоты сигнала. Однако здесь удвоения частоты явно не достаточно. Можно увеличить в 10 раз, но вряд ли причина именно в этом.
Может кто знает как сделать правильно? И где можно почитать об этом?

Sniper53
Пользователь
Сообщения: 55
Зарегистрирован: Пн ноя 09, 2015 7:30 pm

Re: Моделирование гармонического сигнала

Сообщение Sniper53 » Чт ноя 07, 2019 9:56 am

Vig писал(а):Добрый день.
Задача довольно таки простая: построить гармоническую функцию в Matlab.

Код: Выделить всё

clc % очищаем командное окно
clear % удаляем переменные и функции из памяти
f = 10e3; % частота, Гц
A = 1; % амплитуда, В
phi = 0; % начальная фаза
Fs = 20e3; %частота дискретизации, Гц
t = 0:1/Fs:1; % временная ось, одна секунда дискретных значений времени
s = A*cos(2*pi*t*f+phi); % гармонический сигнал
figure(1)
plot(t,s)
title('Косинус')
xlabel('Время, с')
ylabel('Напряжение, В')
xlim([0 1e-3])


Однако результат вышел неожиданный. Функция слабо похожа на косинус. С синусом еще интереснее - совсем не то.
Согласно теореме Котельникова - частота дискретизации должна быть не менее чем в 2 раз выше частоты сигнала. Однако здесь удвоения частоты явно не достаточно. Можно увеличить в 10 раз, но вряд ли причина именно в этом.
Может кто знает как сделать правильно? И где можно почитать об этом?


А Вы сами попробуете на бумаге нарисовать красивый косинус используя только две точки на период. Ничего не получится! Тут тоже самое, получается ломанная функция, все логично. Теорема Котельникова кстати не говорит, о том, что если использовать удвоенную частоту дискретизации, то получатся красивые графики... Так что если Вы хотите, чтобы была красивая функция используете частоту дискретизации на порядок выше чем частота сигнала. П.С. почему косяк отображения с синусом, не знаю, наверное глюк матлаба ибо код у Вас правильный.
С наилучшими пожеланиями, Федоров Д.А.

sandy
Эксперт
Сообщения: 5589
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Re: Моделирование гармонического сигнала

Сообщение sandy » Чт ноя 07, 2019 12:57 pm

наверное глюк матлаба

Синус при таком расчете везде равен нулю. То, что вы видите на графике - обычные погрешности численных расчетов, которые для формата double типично имеют порядок 1e-15.
С уважением

Александр Сергиенко

Sniper53
Пользователь
Сообщения: 55
Зарегистрирован: Пн ноя 09, 2015 7:30 pm

Re: Моделирование гармонического сигнала

Сообщение Sniper53 » Чт ноя 07, 2019 3:21 pm

sandy писал(а):
наверное глюк матлаба

Синус при таком расчете везде равен нулю. То, что вы видите на графике - обычные погрешности численных расчетов, которые для формата double типично имеют порядок 1e-15.


Вообще да, логично! Два отсчета на период синуса везде дадут ноль...
С наилучшими пожеланиями, Федоров Д.А.