Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/89: Рейтинг темы: голосов - 89, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 8

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

27.01.2013, 23:43. Показов 19088. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.01.2013, 23:43
Ответы с готовыми решениями:

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

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

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

13
 Аватар для Галина Борисовн
2835 / 2132 / 87
Регистрация: 02.05.2010
Сообщений: 3,194
28.01.2013, 16:36
Возможно, Вам лучше начать с чтения учебника. Есть хорошая книжка В. Дьяконова и И. Абраменковой: MATLAB обработка сигналов и изображений.
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
28.01.2013, 17:53
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  [ТС]
Не могу тулл бокс подключить в котом функция 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
Цитата Сообщение от 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  [ТС]
Спасибо ))) очень большое спасибо за помощь ))))))
0
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 8
31.01.2013, 13:10  [ТС]
Цитата Сообщение от vital792
для использования этой функции надо установить communications system toolbox.
а как его установить ?)) чет я нигде найти не могу ((
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
31.01.2013, 14:42
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  [ТС]
Блин... вы конечно извините но я не могу разобраться сам..я кое как понимаю как работают те которые уже сделали (
а эти пункты не знаю как делать...может кто поможет ? ((
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
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
01.02.2013, 21:04
Нужно считать спектр шума N = fft(n); и его мучать, в соотвнтствии с википедией... Жаль, что у вас, в театральном, такого не проходят
*прости за грубость
0
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 8
01.02.2013, 21:18  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Нужно считать спектр шума N = fft(n); и его мучать, в соотвнтствии с википедией... Жаль, что у вас, в театральном, такого не проходят
*прости за грубость

может ты мне поможешь доделать ?)) ты же вроде как шаришь в этом всем ))
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
01.02.2013, 21:41
Раньше понедельника я до матлаба не доберусь, поэтому увы! а в понедельки можно глянуть, может Vital792 что подскажет раньше
0
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 8
01.02.2013, 21:44  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Раньше понедельника я до матлаба не доберусь, поэтому увы! а в понедельки можно глянуть, может Vital792 что подскажет раньше
буду надеяться что в понедельник ты мне поможешь ) а Vital792 куда то пропал, надеюсь что кто то из вас поможет )))
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
02.02.2013, 09:57
Цитата Сообщение от martin_lauren Посмотреть сообщение
Vital792 куда то пропал
да не, никуда он не пропадал, скорее он просто потерял интерес к теме, считая ее исчерпанной.
Цитата Сообщение от martin_lauren Посмотреть сообщение
spec2 = (randn(1, N2) + 1i*randn(1, N2)) ./ f; % формируем спектр шума
здесь я формировал спектр, умножая его на линейно убывающую функцию частоты (1/f). Умножая на другую функцию - получаешь другую окраску шума. А для остальных сигналов - просто заменяешь функцию sin() на другую.
Цитата Сообщение от Зосима Посмотреть сообщение
белый шум как раз таки имеет нормальную (или гауссову) плотность вероятности
Не обязательно, как раз наоборот, во многих аудиоредакторах для генерации белого шума используется равномерно распределенная последовательность. Если он Гауссов(а это во многих случаях удобно для моделирования каналов связи) то это специально оговаривается(буква g в функции awgn()). Кстати функция awgn() удобна тем, что в ней можно сразу задать соотношение сигнал/шум в децибелах, а если добавлять шум через randn() это придется считать вручную, хотя это и не сложно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.02.2013, 09:57
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru