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

Как убрать помеху и восстановить сигнал

12.01.2014, 17:10. Показов 14021. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
я построил частотный спектр синала1.txt:
Matlab M
1
2
3
4
5
6
7
L=1800
Fs=1000
NFFT = 2^nextpow2(L)
f = Fs/2*linspace(0,1,NFFT/2+1)
a=textread('1.txt')
A = fft(a,NFFT)/L
plot(f,2*abs(A(1:NFFT/2+1)))
создал помеху:
p= 10*randn(size(a))
наложил ее на сигнал:
a1=a+p
A1 = fft(a1,NFFT)/L
plot(f,2*abs(A1(1:NFFT/2+1)))
Как убрать помеху и восстановить сигнал

ВОПРОС: каким образом можно убрать помеху и восстановить сигнал?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2014, 17:10
Ответы с готовыми решениями:

NE555. Как устранить помеху?
Вот схема: http://i016.***********/1107/50/0084a19e7a25t.jpg Девайс включает сирену на 10 сек.,...

сма indesit модуль Lov end, как победить помеху
Уважаемые форумчане. Собственно весь вопрос в названии темы. Сетевая помеха не даёт нормально...

Объект испускает сигнал и этот сигнал принимает 100 объектов, как они будут обработаны?
Вопрос: Объект испускает сигнал и этот сигнал принимает 100 объектов, как они будут обработаны? ...

Помогите поймать помеху
Добрый день, беда такая: имеем микроконтроллер, питаемый одним блоком питания (5V), имеем другое...

24
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
12.01.2014, 17:31 2
Цитата Сообщение от NIK_Kopernik Посмотреть сообщение
каким образом можно убрать помеху
Полностью - уже никак. Можно убрать помеху там, где нет (или пренебрежимо мал) спектр сигнала.
Что бы убрать шум в полосе сигнала прийдеться применять далеко не тривиальные фильтры.
Если же остановится на первом варианте - то классический ФНЧ. Вам какой Баттерворта, Чебышева, Бесселя?
0
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 13
12.01.2014, 17:39  [ТС] 3
Первый вариант - то что нужно. ФНЧ лучше тот который легче реализовать
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
12.01.2014, 18:34 4
Они все реализуются (в матлабе) одиниково (с точки зрения количества строк кода). Вам бы для начала определится с параметрами фильтра, как то: частота среза, пульсации в полосе пропускания и подавления и тд. Также нужно условится, что считать верхней частотой в спектре сигнала, т.к. он у Вас, быстрее всего, расползется на весь интервал от нуля до частоты Найквиста = fs/2.
0
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 13
12.01.2014, 18:53  [ТС] 5
Первоначально сигнал выглядит вот так:
Как убрать помеху и восстановить сигнал

я думаю, что частотой среза будет значение 200 Гц. А с остальными значениями я не разобрался
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
12.01.2014, 21:37 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
clc; close all; clear;
y = dlmread('1.txt'); % читаем данные из файла
fs = 1e3; % частота дискретизации
L = length(y); % длина вектора сигнала
t = (0:L-1)/fs; % вектор времени
Y = y+10*randn(size(y)); % добавляем шум с нормальным распределением, мю = 0, сигма = 1
nfft = 2^nextpow2(L); % количество точек преобразования Фурье
freq = fs/2*linspace(-1, 1, nfft); % вектор частот
fc = 200; % частота среза ФНЧ
[b, a] = butter(6, 2*fc/fs); % коэф. числителя и знаменателя для коэффициента передачи фильтра
X = filter(b, a, Y); % фильтруем сигнал
S = fft([X Y], nfft)/L; % берем преобразование Фурье от зашумленого и фильтрованного сигналов
%% Рисуем графики
subplot(311)
plot(t, Y, t, y, '-k', 'linewidth', 2); grid on
xlabel('t, s'); ylabel('Amplitude')
subplot(312)
plot(freq, 2*fftshift(20*log10(abs(S)))); grid on
xlim([0 fs/2])
xlabel('f, Hz'); ylabel('Spectral density, dB')
subplot(313)
plot(t, X, t, y, '-k', 'linewidth', 2); grid on
xlabel('t, s'); ylabel('Amplitude')
Ну уж где какой сигнал - думаю разберешь
Миниатюры
Как убрать помеху и восстановить сигнал  
1
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 13
17.01.2014, 19:30  [ТС] 7
Возник ещё один вопросик: возможно ли посчитать СКО сигнала?
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
17.01.2014, 22:56 8
std(y) вроде бы. Проверь...
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 9
22.05.2014, 21:10 9
Добрый день, я новичок в MatLabe пытаюсь разобраться в этих дебрях, но ничего не выходит.
изначально задача у меня такая же как и у ТС, есть некий файл, в нем шум, необходимо шум убрать, и проиграть файл, чтобы услышать звук (какой он должен быть я так же не могу понять =( )
Заранее прошу прощения, за неправильные действия, но делал как понял:
1) посмотрел спектр сигнала , и по нему определил несущую частоту, и ширину боковых полос.
2) с этих данных попытался через fdatool создать полосовой фильтр, вроде он у меня как получился, потому что при фильтрации, по спектру вижу что все, что вне ширины боковых полос, все занулено. Но при проигрывании полученного сигнала, я так же слышу шум.. и ничего больше...
и... прочитал кучу информации, но не могу разобраться, скорее всего я не правильно понимаю необходимый мне процесс фильтрации
(простите если не там написал)
файл - вот сам файл.
Заранее благодарю.
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
26.05.2014, 13:39 10
Цитата Сообщение от Toksy Посмотреть сообщение
Но при проигрывании полученного сигнала, я так же слышу шум.. и ничего больше...
Если у Вас в полосе сигнала присутствует шум, а тем более если отношение С/Ш плохенькое то ничего Вы и не добьетесь традиционной фильтрацией. Это если бы у Вас помеха была сосредоточенная - тогда да. Настроили режекторный фильтр, подавили и готово. А так -
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 9
27.05.2014, 00:20 11
Цитата Сообщение от R2D2 Посмотреть сообщение
так -
спасибо, но я все же пытаюсь ... это было задано в универе, ну раз задано, значит добиться как то можно. Шум вроде подавить получилось, подобрал полосовой фильтр. Где то вычитал, что нужен некий *диодный мост*, но пока безрезультатно.
Буду разбираться =)
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
27.05.2014, 14:27 12
Toksy, частоту дискретизации укажите.
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 9
27.05.2014, 22:48 13
fd=96 кГц
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
28.05.2014, 10:01 14
Toksy, нашлось у меня таки пара минут. Итак: давайте Вы для себя громко в слух проговорите, что Вы хотите получить.
Спектр сигнала как_бы_намекает на то, что это АМ. Не так ли? Вы же не детектируя этот АМ-сигнал фильтруете одну (или две, непонятно, так как код Вы не предоставили) боковую, проигрываете ее и при этом хотите услышать что то (видимо) информационное. Не хотите все же попробовать детектировать, а потом фильтровать? Может даже лучше наоборот (полосовой фильтр, потом - детектор). Как поступим? Для детектирования есть пара способов:
1. В нем я уверен на 98%: делаем мат.модель детектора. Диод - это abs, а RC-цепочку моделируем фильтром с передаточной функцией 1/(1+j*w*R*C). Но это уныло.
2. В этом способе я не так уверен, так как не углублялся в теорию его работы. Но на Вашем примере, кажись, срабатывает. Детектируем с помощью abs(hilbert(y)). ТОесть считаем комплексную огибающую сигнала. Оставшиеся ВЧ шумы фильтруем тем таки банальным ФНЧ. Или более крутым (с более прямоугольной АЧХ) фильтром.
Что скажете?
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 9
28.05.2014, 15:59 15
Благодарю за уделенное время. Итак, я пытался сделать так : (естественно fft, далее узнаю несущую и боковые) делаю полосовой фильтр, с полосой пропускания от частоты чуть ниже первой боковой до частоты чуть выше второй. Далее нужно делать детектировпние? Сегодня с универа домой приду, сделаю как Вы написали. И небольшой вопрос: во втором пункте на место 'у' ставить мой профильтрованный сигнал?
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
28.05.2014, 16:41 16
Цитата Сообщение от Toksy Посмотреть сообщение
во втором пункте на место 'у' ставить мой профильтрованный сигнал?
Вся крутость второго метода как раз в том, что у - это Ваш исходный сигнал. Операция abs(hilbert(y)) переносит процесс, который происходит в окрестности Вашей несущей частоты в окрестность нуля Вот оно где, детектирование А там уже можно и полосовой фильтр использовать настроив его по полосе сигнала.
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 9
28.05.2014, 18:22 17
Огромное спасибо за разьяснения, буду дома минут через 30 постараюсь реализовать

Добавлено через 45 минут
Вот мой результат:
Matlab M
1
2
3
4
5
6
7
8
9
10
>> N=size(MSr,1);
fs=96e3;
F=fft(MSr);
plot(fs/N:fs/N:fs,abs(F));  % изначальный сигнал 
>> S=abs(hilbert(MSr));
>> plot(abs(fft(S)));         % после применения команды
>> fdatool
>> s1=abs(fft(S));
>> G=filter(Num,1,s1);       % фильтрация
>> plot(abs(G));               % полученный результат

Скажите, мои действия верны? (еще не разобрался как поставить картинки... сейчас найду)

Добавлено через 8 минут
А и еще, после проигрывания *G*, слышу монотонный гул, с небоьшими помехами ( как будто не до конца вставил наушники в гнездо)
Как думаете, это может быть верным результатом? или этот гул есть те же помехи?
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
28.05.2014, 19:27 18
Смотри, вот я отметил на рисунке твои боковые и одну из них (верхнюю), но после детектирования. Там мы имеем две некие тональные компоненты (0.8295 и 1.243 кГц). Их будем вырезать полосовым фильтром?
Миниатюры
Как убрать помеху и восстановить сигнал  
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 9
28.05.2014, 19:46 19
Как нам говорили, их необходимо оставить, ибо они несут полезную информацию. То есть при создании фильтра в fdatool , fstop нужно ставить после 2го пика, так?

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

Добавлено через 3 минуты

Не по теме:

прошу прощения, как загружать миниатюры?

0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
28.05.2014, 22:37 20
Цитата Сообщение от Toksy Посмотреть сообщение
То есть при создании фильтра в fdatool , fstop нужно ставить после 2го пика, так?
Забудьте про fdatool. Это подход для нубов Ты же попал на форум, где все магическим образом множат опыт.
Цитата Сообщение от Toksy Посмотреть сообщение
а тот код, что я написал выше? он неправильный?
Немного неправильный, так как если его просто скопипастить и попытаться запустить - ничего не выйдет. А еще
Цитата Сообщение от Toksy Посмотреть сообщение
s1=abs(fft(S));
>> G=filter(Num,1,s1);
В функцию filter мы должны подать сигнал, а не модуль его спектра.

Я тут немного пошуршал и вот что получил (для сохранения твоего спортивного интереса сам код не выкладываю. Если энтузиазм угаснет - могу сбросить, мне не жалко ). В detected_signal.wav детектированный и отфильтрованный полосовым фильтром сигнал, как ты понял.
Миниатюры
Как убрать помеху и восстановить сигнал  
Вложения
Тип файла: rar detected_signal.rar (60.9 Кб, 70 просмотров)
0
28.05.2014, 22:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2014, 22:37
Помогаю со студенческими работами здесь

Можно ли сделать Repeat сигнал с помощью USB Wi Fi чтобы сигнал дошел до улицы
Я с ноутбука раздал Wi Fi интернет, у мя в ноуте DSL(через UTP) интернет, раздал с командной...

Определить, сигнал какого цвета сигнал горит для пешеходов в этот момент.
3. Работа светофора для пешеходов запрограммирована следующим образом: в начале каждого часа в...

Найти вероятность того, что: посланный сигнал будет принят; принятый сигнал типа А
Люди добрые! Помогите пожалуйста решить! Раздел задачи увы не знаю... По линии связи передано 2...

Определить вероятность что a) будет получен сигнал 1 б) сигнал 2
По каналу связи передаются два сигнала: ноль и единица. Из-за наличия помех возможны искажения...


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

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