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

Пропустить белый шум через ФНЧ

08.02.2015, 22:44. Показов 7093. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!
Возникла задача пропустить белый шум через фильтр нижних частот. С матлабом работаю совсем недавно, поэтому есть проблемы.

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
F0 = 3e6;                                      % частота среза  
[b, a] = ellip(15, 1, 20, 2*pi*F0, 's');       % синтез коэффициентов фильтра
f = 0:1000:5*10^6;                             % вектор частот для расчета АЧХ и ФЧХ
h = freqs(b, a, 2*pi*f);                       % комплексный коэффициент передачи
subplot(3, 2, 1)
plot(f, abs(h))                                % график АЧХ
grid
subplot(3, 2, 2)
plot(f, unwrap(angle(h))*180/pi);              % график ФЧХ (в градусах)
grid
noise = wgn(1, length(f), -30);                % формируем белый шум
D = fft(h .* fft(noise));                      % пропускаем белый шум через ФНЧ
subplot(3, 2, 3)
plot(f,abs(D));                                % спектр результирующего процесса


Как видно из полученного графика, шум и не думал фильтроваться... Где я ошибся?
Миниатюры
Пропустить белый шум через ФНЧ  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.02.2015, 22:44
Ответы с готовыми решениями:

На сигнал наложить шум и пропустить все через фильтр Калмана
на сигнал sin(x) наложить шум, и пропустить это все через фильтр Калмана как реализовать все это(код)? а то в хелпе матлаба про Калмана...

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

Как наложить белый шум на случайный сигнал
я задаю случайный сигнал через rand(0,480), так как сигнал мне нужен от 0 до 0.5, то умножаю его на 0.5 и мне был необходим всплеск до 1.5...

7
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
09.02.2015, 11:25
Лучший ответ Сообщение было отмечено Detweeted как решение

Решение

В строке 12 убери fft
D = h.*fft(noise);

1
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 21
18.02.2015, 19:14  [ТС]
А вот еще вопрос к знатокам!

А почему если вместо "лобового" обратного преобразования Фурье от спектра (спектр равен h .* fft(noise)) использовать встроенную функцию

D = filter(b, a, noise);

то ничего не будет работать? 0_0

И подскажите еще, пожалуйста. Невероятно мучительный вопрос. А каков математический аналог нормализации корреляционной функции с параметром 'coef'? Ну вот чтоб прям формула была. В хэлпе и интернетах этого нет.
0
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 21
22.02.2015, 16:18  [ТС]
Ой, Зосимы нет, и никто не отвечает
Сформулирую подробнее.
Почему "лобовой" метод с применением прямого и обратного преобразования фурье работает
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
F0 = 3e6;                                      % частота среза  
[b, a] = ellip(15, 1, 20, 2*pi*F0, 's');       % синтез коэффициентов фильтра
f = 1:500:5*10^6;                              % вектор частот для расчета АЧХ и ФЧХ
h = freqs(b, a, 2*pi*f);                       % комплексный коэффициент передачи
subplot(3, 2, 1)
plot(f, abs(h))                                % график АЧХ
grid
subplot(3, 2, 2)
plot(f, unwrap(angle(h))*180/pi);              % график ФЧХ (в градусах)
grid
noise = wgn(1, length(f), -30);                % формируем белый шум
D = h .* fft(noise);                           % пропускаем белый шум через ФНЧ
subplot(3, 2, 3)
plot(f,abs(D));                                % спектр результирующего процесса
noise2 = ifft(D);                              % осциллограмма результирующего процесса
subplot(3, 2, 4)
plot(1./f, noise2);                                
xlim([0 10e-3]);
А "универсальный" метод с использованием встроенной функции filter - нет
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
F0 = 3e6;                                      % частота среза  
[b, a] = ellip(15, 1, 20, 2*pi*F0, 's');       % синтез коэффициентов фильтра
f = 1:500:5*10^6;                              % вектор частот для расчета АЧХ и ФЧХ
h = freqs(b, a, 2*pi*f);                       % комплексный коэффициент передачи
subplot(3, 2, 1)
plot(f, abs(h))                                % график АЧХ
grid
subplot(3, 2, 2)
plot(f, unwrap(angle(h))*180/pi);              % график ФЧХ (в градусах)
grid
noise = wgn(1, length(f), -30);                % формируем белый шум
 % осциллограмма результирующего процесса
noise2 = filter (b, a, noise);
subplot(3, 2, 4)
plot(1./f, noise2);                                
xlim([0 10e-3]);
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
22.02.2015, 17:14
Detweeted, я твой вопрос видел, но пока не понял в чем тут загвоздка
1. Действительно ли корректна запись:
Matlab M
1
2
3
[b, a] = ellip(15, 1, 20, 2*pi*F0, 's'); 
...
noise2 = filter (b, a, noise);
Может b и a в этих функциях несут разный смысл?

2. А с другим видом ФНЧ (чебышева или батерворта) такая же история? (для данного элиптического в массиве а получается один коэф-т порядка 10107 )
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
25.02.2015, 20:42
вот еще один вариант фильтрации:
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
clear, clc
 
F0 = 3e6;                                      % частота среза  
[b, a] = ellip(15, 1, 20, 2*pi*F0, 's');       % синтез коэффициентов фильтра
f = 1:500:5*10^6;                              % вектор частот для расчета АЧХ и ФЧХ
h = freqs(b, a, 2*pi*f);                       % комплексный коэффициент передачи
subplot(2, 2, 1)
plot(f, abs(h))                                % график АЧХ
grid
subplot(2, 2, 3)
plot(f, unwrap(angle(h))*180/pi);              % график ФЧХ (в градусах)
grid
noise = wgn(1, length(f), -30);                % формируем белый шум
 
% осциллограмма результирующего процесса
H = tf(b, a);
t = linspace(0, 1.5e-4,length(noise));
noise2 = lsim(H,noise,t);
 
subplot(2, 2, 2)
plot(t, noise2,'b')
subplot(2, 2, 4)
plot(t,noise,'r');
0
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 21
26.02.2015, 10:59  [ТС]
Зосима, выглядит многообещающе, но по факту почему-то не работает
Берем сигнал длительностью 100 микросекунд с несущей 40МГц, пропускаем его через полосовой фильтр с полосой 1МГц. На выходе добрая часть сигнала съедается... Так быть не должно. Не понимаю, откуда такой результат.
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
clear, clc
Signal = load ('DSignalOVERAL.txt','-ascii');
% частота сигнала  
Fs = 40e6;        
%Длительность сигнала
Ts = 100e-6;
% частота дискретизации
SamplingRate = 10*Fs;
% синтез коэффициентов фильтра
[b, a] = butter(4, [2*pi*(Fs-0.5e6) 2*pi*(Fs+0.5e6)],'s'); 
% вектор частот для расчета АЧХ и ФЧХ
f = 0:1/Ts:SamplingRate;         
% комплексный коэффициент передачи
h = freqs(b, a, 2*pi*f);                       
subplot(2, 2, 1)
plot(f, abs(h))                                % график АЧХ
xlim([Fs-2e6 Fs+2e6]);
grid
subplot(2, 2, 3)
plot(f, unwrap(angle(h))*180/pi);              % график ФЧХ (в градусах)
grid
% осциллограмма результирующего процесса
H = tf(b, a);
t = 0: 1/SamplingRate: Ts;
Signal2 = lsim(H, Signal, t);
 
subplot(2, 2, 2)
plot(t, Signal2,'b')
xlim([0 Ts]);
subplot(2, 2, 4)
plot(t, Signal,'r');
xlim([0 Ts]);
Сам txt-файл с сигналом прикрепил в архиве.
Миниатюры
Пропустить белый шум через ФНЧ  
Вложения
Тип файла: rar DSignalOVERAL.rar (6.6 Кб, 12 просмотров)
0
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 30
15.04.2015, 22:48
подскажите,пожалуйста, у меня есть исходный сигнал,состоящий из 8 гармоник. Имеется такая схема,состоящая из 4 фильтров Как показать спектральную плотность сигнала,проходящего через каждый фильтр и итоговый сигнал во временной области в конце?

я в матлабе новичок.не очень представляю,как это реализовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.04.2015, 22:48
Помогаю со студенческими работами здесь

Настроить роутер так чтобы через него можно было пропустить белый ip
Всем привет! Есть большая локальная сеть по которой ходит интернет.Один белый ip который смотрит наружу. В сети также есть несколько...

Белый шум
Доброе время суток друзья. Столкнулся с такой проблемой, время от времени на мониторе появляется белый шум (ссылку на видео прикреплю...

Белый гауссовский шум
Здравствуйте! При запуске private void белыйШумToolStripMenuItem_Click(object sender, EventArgs e) { Bitmap...

Белый шум на старте пк
Всем привет! Иногда, довольно редко, случается такое: Запускаю пк кнопкой, все в рамках нормы заводится, мать один раз пикает, монитор...

Takstar Pro 82 и белый шум
Здравствуйте,прошу не кидать помидорами,начну с предыстории,решил проверить приложуху для замера ачх на андроиде(хотя сразу понимал,что...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru