0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 8
1

Работа с сигналами для опытных

27.01.2013, 23:43. Показов 16854. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день или вечер, помогите пожалуйста мне сделать эти модели в MATLAB, если можно как нибудь по понятней расписать как что делать и откуда что брать, я в этой программе вообще не работал а сдавать нужно уже в ближайшее время. очень прошу помогите кому не сложно (((

Реализовать в MATLAB:
1) Сгенерировать сигнал sin(x).
2) Наложить на него белый шум.
3) Произвести сглаживание скользящим средним.
4) Произвести сглаживание методом наименьших квадратов.
5) Произвести фильтрацию шумовой помехи нерекурсивным полосовым фильтром (любым на ваш выбор).
6) Произвести фильтрацию шумовой помехи рекурсивным цифровым фильтром (любым на ваш выбор).
7) Повторить задачи 3–6 для розового шума.
8) Повторить задачи 3–6 для синего (голубого) шума.
9) Повторить задачи 3–6 серого шума.
10) Повторить задачи 2–9 для функции ех (x=0…2).
11) Повторить задачи 2–9 для функции sin(x)/x.
12) Произвести анализ проделанной работы для шумов с разной амплитудой.
13) Сделать выводы о проделанной работе.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2013, 23:43
Ответы с готовыми решениями:

Работа с сигналами
Необходимо создав дерево процессов : проц1 проц2...

Работа с сигналами
Есть следующее задание: Не разрешать получение сигнала внутри его обработчика. То бишь, при...

Работа с сигналами в UNIX
Скажите пожалуйста, как можно перехватить сигнал? например ошибку float pointing exception. Т.е...

Работа с class, требуется объяснение/совет опытных
К примеру имеется такой код:void main(int argc, const char * argv) { const int n = 2; ...

13
2832 / 2129 / 86
Регистрация: 02.05.2010
Сообщений: 3,195
28.01.2013, 16:36 2
Возможно, Вам лучше начать с чтения учебника. Есть хорошая книжка В. Дьяконова и И. Абраменковой: MATLAB обработка сигналов и изображений.
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
28.01.2013, 17:53 3
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
close all; clear all; clc;
Fs = 48000;
t = (0:100)/Fs;
%% 1
s = sin(2*pi*2000*t);
 
%% 2
s = awgn(s, -1); % -1 dB
figure; plot(s, 'k'); hold on; axis tight;
 
%% 3
y1 = smooth(s, 10, 'moving'); % size window = 10;
plot(y1', 'r', 'LineWidth', 2); hold on; axis tight;
 
%% 4
N = 20; % poly degree
x = 1:length(s);
poly = polyfit(x, s, N);
y2 = 0;
for k=0:N
    y2 = y2 + poly(N-k+1) * x.^k;
end
plot(y2, 'g', 'LineWidth', 2);
 
%% 5
b = fir1(10, [0.1 .2]);
y3 = filtfilt(b, 1, s);
plot(y3, 'b', 'LineWidth', 2);
 
%% 6
[b, a] = butter(5, 0.2, 'low');
y4 = filtfilt(b, a, s);
plot(y4, 'm', 'LineWidth', 2);
 
%% 7
% розовый шум: спектр убывает по закону 1/f
N = length(s);
N2 = floor(N/2);
f = (2:(N2+1));
spec2 = (randn(1, N2) + 1i*randn(1, N2)) ./ f; % формируем спектр шума
spec = [0 spec2 fliplr(conj(spec2))];
pink = real(ifft(spec));
 
s = s + pink;
figure; plot(s, 'k'); hold on; axis tight;
%  и т.д.
Честно говоря, не уверен, что правильно формирую розовый шум, но если все таки правильно, остальные цвета шумов формируются аналогично.

Добавлено через 2 минуты
ЗЫ: все характеристики (размеры окон, порядки, полосы фильтров и т.д. брал наугад, так в условии это не оговорено)
1
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 8
28.01.2013, 20:20  [ТС] 4
Не могу тулл бокс подключить в котом функция awgn
как это делается ? где скачать, как подключать ?

Добавлено через 9 минут
Цитата Сообщение от vital792 Посмотреть сообщение
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
close all; clear all; clc;
Fs = 48000;
t = (0:100)/Fs;
%% 1
s = sin(2*pi*2000*t);
 
%% 2
s = awgn(s, -1); % -1 dB
figure; plot(s, 'k'); hold on; axis tight;
 
%% 3
y1 = smooth(s, 10, 'moving'); % size window = 10;
plot(y1', 'r', 'LineWidth', 2); hold on; axis tight;
 
%% 4
N = 20; % poly degree
x = 1:length(s);
poly = polyfit(x, s, N);
y2 = 0;
for k=0:N
    y2 = y2 + poly(N-k+1) * x.^k;
end
plot(y2, 'g', 'LineWidth', 2);
 
%% 5
b = fir1(10, [0.1 .2]);
y3 = filtfilt(b, 1, s);
plot(y3, 'b', 'LineWidth', 2);
 
%% 6
[b, a] = butter(5, 0.2, 'low');
y4 = filtfilt(b, a, s);
plot(y4, 'm', 'LineWidth', 2);
 
%% 7
% розовый шум: спектр убывает по закону 1/f
N = length(s);
N2 = floor(N/2);
f = (2:(N2+1));
spec2 = (randn(1, N2) + 1i*randn(1, N2)) ./ f; % формируем спектр шума
spec = [0 spec2 fliplr(conj(spec2))];
pink = real(ifft(spec));
 
s = s + pink;
figure; plot(s, 'k'); hold on; axis tight;
%  и т.д.
Честно говоря, не уверен, что правильно формирую розовый шум, но если все таки правильно, остальные цвета шумов формируются аналогично.

Добавлено через 2 минуты
ЗЫ: все характеристики (размеры окон, порядки, полосы фильтров и т.д. брал наугад, так в условии это не оговорено)
А какие ты выбирал в 5 и 6 пунктах ? )
5) Произвести фильтрацию шумовой помехи нерекурсивным полосовым фильтром (любым на ваш выбор).
6) Произвести фильтрацию шумовой помехи рекурсивным цифровым фильтром (любым на ваш выбор).

и если не сложно сделай дальше а то я вообще не шарю ((
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
29.01.2013, 10:16 5
Цитата Сообщение от martin_lauren Посмотреть сообщение
тулл бокс подключить в котом функция awgn
для использования этой функции надо установить communications system toolbox. Можно обойтись без нее, просто прибавляя к сигналу шум, сгенерированный функцией randn(). Если надо задать соотношение сигнал/шум, как в функции awgn() в децибелах, используй соотношение 20*lg(A(сигнала)/A(шума)), где А - среднеквадратические значения сигнала и шума(для функции randn() это единица).

Цитата Сообщение от martin_lauren Посмотреть сообщение
А какие ты выбирал в 5 и 6 пунктах ? )
Нерекурсивный фильтр я выбрал КИХ-фильтр 10-го порядка, сгенерированный оконным методом. Функция fir1 по умолчанию использует окно Хемминга. Полосу [0.1 .2] я выбрал произвольно, только чтобы она была ближе к низкочастотному фильтру, т.к. именно он нужен для сглаживания(а если точнее, чтобы частота сгенеренного синуса попала в эту полосу). Рекурсивный фильтр я выбрал простейший - фильтр баттерворта 5-го порядка. Полоса выбиралась из тех же соображений.

Цитата Сообщение от martin_lauren Посмотреть сообщение
и если не сложно сделай дальше а то я вообще не шарю ((
так начинай "шарить")) Я показал образец, осталось только сгенерить шумы остальных цветов и сделать тоже самое для них (http://ru.wikipedia.org/wiki/%... 0%BC%D0%B0) Если частота спадает/нарастает линейно, можно просто дифференцировать/интегрировать белый шум. В остальных случаях наверно придется делать как я делал для розового шума - напрямую использовать спектр(хотя можно конечно генерировать с помощью фильтров, но это тоже самое)...

Добавлено через 1 час 10 минут
Цитата Сообщение от vital792 Посмотреть сообщение
а если точнее, чтобы частота сгенеренного синуса попала в эту полосу
Цитата Сообщение от vital792 Посмотреть сообщение
я выбрал произвольно
и не попал))) Частота синуса в данном случае меньше 0.1. Если выбрать полосу правильнее, синий график будет ближе к истине)
1
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 8
29.01.2013, 13:01  [ТС] 6
Спасибо ))) очень большое спасибо за помощь ))))))
0
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 8
31.01.2013, 13:10  [ТС] 7
Цитата Сообщение от vital792
для использования этой функции надо установить communications system toolbox.
а как его установить ?)) чет я нигде найти не могу ((
0
5236 / 3564 / 378
Регистрация: 02.04.2012
Сообщений: 6,471
Записей в блоге: 17
31.01.2013, 14:42 8
martin_lauren, дружочек, можешь не заморачиваться, а заюзать встроенный генератор случ. чисел с нормальным законом распределения:
Matlab M
1
2
n = 0.1*randn(size(t)); % шум
s = sin(2*pi*2000*t) + n; % сигнал + шум
Величину шума можно регулировать множителем перед randn.
Сам по себе randn генерирует случ. число с номальным распределением, с нулевым средним и единичной дисперсией. Вспоминая правило 3-х сигм нетрудно догадаться, что 0.1*randn будет генерировать шум в диапазоне (примерно) от -0.3 до 0.3.

Добавлено через 57 минут
Ах да, забыл уточнить, что белый шум как раз таки имеет нормальную (или гауссову) плотность вероятности, и его мы прибавляем (add) к сигналу (а не умножаем, например). Поэтому мы имеем право заменить функцию awgn(добавление аддитивного белого гауссовского шума) прибавлением к сигналу ф-ции randn.
2
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 8
01.02.2013, 19:15  [ТС] 9
Блин... вы конечно извините но я не могу разобраться сам..я кое как понимаю как работают те которые уже сделали (
а эти пункты не знаю как делать...может кто поможет ? ((
8) Повторить задачи 3–6 для синего (голубого) шума.
9) Повторить задачи 3–6 серого шума.
10) Повторить задачи 2–9 для функции ех (x=0…2).
11) Повторить задачи 2–9 для функции sin(x)/x.
12) Произвести анализ проделанной работы для шумов с разной амплитудой.

Добавлено через 4 часа 7 минут
Цитата Сообщение от Зосима Посмотреть сообщение
martin_lauren, дружочек, можешь не заморачиваться, а заюзать встроенный генератор случ. чисел с нормальным законом распределения:
Matlab M
1
2
n = 0.1*randn(size(t)); % шум
s = sin(2*pi*2000*t) + n; % сигнал + шум
Величину шума можно регулировать множителем перед randn.
Сам по себе randn генерирует случ. число с номальным распределением, с нулевым средним и единичной дисперсией. Вспоминая правило 3-х сигм нетрудно догадаться, что 0.1*randn будет генерировать шум в диапазоне (примерно) от -0.3 до 0.3.

Добавлено через 57 минут
Ах да, забыл уточнить, что белый шум как раз таки имеет нормальную (или гауссову) плотность вероятности, и его мы прибавляем (add) к сигналу (а не умножаем, например). Поэтому мы имеем право заменить функцию awgn(добавление аддитивного белого гауссовского шума) прибавлением к сигналу ф-ции randn.
а как для остальных шумов сделать ??

и как вообще эти функции брать ?
0
5236 / 3564 / 378
Регистрация: 02.04.2012
Сообщений: 6,471
Записей в блоге: 17
01.02.2013, 21:04 10
Нужно считать спектр шума N = fft(n); и его мучать, в соотвнтствии с википедией... Жаль, что у вас, в театральном, такого не проходят
*прости за грубость
0
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 8
01.02.2013, 21:18  [ТС] 11
Цитата Сообщение от Зосима Посмотреть сообщение
Нужно считать спектр шума N = fft(n); и его мучать, в соотвнтствии с википедией... Жаль, что у вас, в театральном, такого не проходят
*прости за грубость

может ты мне поможешь доделать ?)) ты же вроде как шаришь в этом всем ))
0
5236 / 3564 / 378
Регистрация: 02.04.2012
Сообщений: 6,471
Записей в блоге: 17
01.02.2013, 21:41 12
Раньше понедельника я до матлаба не доберусь, поэтому увы! а в понедельки можно глянуть, может Vital792 что подскажет раньше
0
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 8
01.02.2013, 21:44  [ТС] 13
Цитата Сообщение от Зосима Посмотреть сообщение
Раньше понедельника я до матлаба не доберусь, поэтому увы! а в понедельки можно глянуть, может Vital792 что подскажет раньше
буду надеяться что в понедельник ты мне поможешь ) а Vital792 куда то пропал, надеюсь что кто то из вас поможет )))
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
02.02.2013, 09:57 14
Цитата Сообщение от martin_lauren Посмотреть сообщение
Vital792 куда то пропал
да не, никуда он не пропадал, скорее он просто потерял интерес к теме, считая ее исчерпанной.
Цитата Сообщение от martin_lauren Посмотреть сообщение
spec2 = (randn(1, N2) + 1i*randn(1, N2)) ./ f; % формируем спектр шума
здесь я формировал спектр, умножая его на линейно убывающую функцию частоты (1/f). Умножая на другую функцию - получаешь другую окраску шума. А для остальных сигналов - просто заменяешь функцию sin() на другую.
Цитата Сообщение от Зосима Посмотреть сообщение
белый шум как раз таки имеет нормальную (или гауссову) плотность вероятности
Не обязательно, как раз наоборот, во многих аудиоредакторах для генерации белого шума используется равномерно распределенная последовательность. Если он Гауссов(а это во многих случаях удобно для моделирования каналов связи) то это специально оговаривается(буква g в функции awgn()). Кстати функция awgn() удобна тем, что в ней можно сразу задать соотношение сигнал/шум в децибелах, а если добавлять шум через randn() это придется считать вручную, хотя это и не сложно.
0
02.02.2013, 09:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.02.2013, 09:57
Помогаю со студенческими работами здесь

для очень опытных специалистов
как сделать ниже указанное с помощью вин апи функций? в распоряжении имеется обычная игра типа...

предложение для опытных программистов
добрый день уважаемые госпда программисты - необходима помощь по выполнению лабораторных по...

Ищу начинающих и опытных людей для общения и взаимопомощи
ищю начинающих и опытных людей для общения и взаимопомощи. пишите, буду рад

Команда опытных разработчиков С#/.NET (4 человека) для Ваших проектов
Команда опытных разработчиков С#/.NET (4 человека) готова выполнить Ваши проекты любой сложности. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru