Перейти к содержанию
    

Как создать фильтр в матлабе?

Доброго времени суток!

Подскажите код в матлабе для полосового фильтра с полосой пропускания 0.99 - 1.01 ГГц. Сигнал синусоидальный амплитудно модулированный несколькими частотами (низкие частоты+высшие гармоники). Несущая частота сигнала - 1 ГГц.

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток!

Подскажите код в матлабе для полосового фильтра с полосой пропускания 0.99 - 1.01 ГГц. Сигнал амплитудно модулированный несколькими частотами (низкие частоты+высшие гармоники). Несущая частота сигнала - 1 ГГц.

Воспользуйся инструментом fdatool. Так, имхо, проще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Воспользуйся инструментом fdatool. Так, имхо, проще.

А как теперь этот фильтр связать с сигналом?

Получился такой код:

 

function Hd = filter

Fs = 200; % Sampling Frequency

Fstop1 = 1.25; % First Stopband Frequency

Fpass1 = 1.35; % First Passband Frequency

Fpass2 = 1.39; % Second Passband Frequency

Fstop2 = 1.45; % Second Stopband Frequency

Astop1 = 60; % First Stopband Attenuation (dB)

Apass = 1; % Passband Ripple (dB)

Astop2 = 80; % Second Stopband Attenuation (dB)

match = 'both'; % Band to match exactly

h = fdesign.bandpass(Fstop1, Fpass1, Fpass2, Fstop2, Astop1, Apass, ... Astop2, Fs);

Hd = design(h, 'ellip', 'MatchExactly', match);

 

 

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как теперь этот фильтр связать с сигналом?

Получился такой код:

У функции должен быть параметр. Жми на соседний пункт меню.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У функции должен быть параметр. Жми на соседний пункт меню.

Не понял на какой соседний пункт жать, можно чуть подробнее? У меня функция для сигнала получается в ходе решения уравнений, мне надо этот фильтр наложить на сигнал в коде матлаба.

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помещаете рассчитанные коэффициенты КИХ-фильтра в массив Num, после чего вводите:

y=filter(Num,1,x), где y - выходной сигнал, x - входной сигнал. Если фильтр - БИХ, вместо единицы пишете коэффициенты а

 

ЗЫ. А аппаратно-то чем 1 ГГц фильтровать собрались?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помещаете рассчитанные коэффициенты КИХ-фильтра в массив Num, после чего вводите:

y=filter(Num,1,x), где y - выходной сигнал, x - входной сигнал. Если фильтр - БИХ, вместо единицы пишете коэффициенты а

 

Что-то матлаб ругается, пишет:

"Dimension argument must be a positive integer scalar in the range 1 to 2^31" в этой записи: y=filter(Hd,1,x)

 

Коэффициенты Num таким образом считаются?:

 

[N,Wn,BETA,TYPE] = kaiserord([Fstop1 Fpass1 Fpass2 Fstop2]/(Fs/2), [0 1 0], [Dstop1 Dpass Dstop2]);

b = fir1(N, Wn, TYPE, kaiser(N+1, BETA), flag);

Hd = dfilt.dffir( В );

 

y=filter(Hd,1,x)

plot(t2,yidi,'r')

 

ЗЫ. А аппаратно-то чем 1 ГГц фильтровать собрались?

Мне это вообще нужно для выделения первой гармоники из спектра сигнала, т.к. простыми методами - не получается из-за сложности сигнала. Хочу посчитать мощность усилителя по первой гармонике.

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...