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

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

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

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

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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2015, 22:44
Ответы с готовыми решениями:

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

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

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

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

7
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
09.02.2015, 11:25 2
Лучший ответ Сообщение было отмечено Detweeted как решение

Решение

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

Пропустить белый шум через ФНЧ
1
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 21
18.02.2015, 19:14  [ТС] 3
А вот еще вопрос к знатокам!

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

D = filter(b, a, noise);

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

И подскажите еще, пожалуйста. Невероятно мучительный вопрос. А каков математический аналог нормализации корреляционной функции с параметром 'coef'? Ну вот чтоб прям формула была. В хэлпе и интернетах этого нет.
0
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 21
22.02.2015, 16:18  [ТС] 4
Ой, Зосимы нет, и никто не отвечает
Сформулирую подробнее.
Почему "лобовой" метод с применением прямого и обратного преобразования фурье работает
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
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
22.02.2015, 17:14 5
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
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
25.02.2015, 20:42 6
вот еще один вариант фильтрации:
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  [ТС] 7
Зосима, выглядит многообещающе, но по факту почему-то не работает
Берем сигнал длительностью 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
подскажите,пожалуйста, у меня есть исходный сигнал,состоящий из 8 гармоник. Имеется такая схема,состоящая из 4 фильтров Как показать спектральную плотность сигнала,проходящего через каждый фильтр и итоговый сигнал во временной области в конце?

я в матлабе новичок.не очень представляю,как это реализовать.
0
15.04.2015, 22:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2015, 22:48
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru