Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как создать фильтр в матлабе?
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
Stefan1
Доброго времени суток!
Подскажите код в матлабе для полосового фильтра с полосой пропускания 0.99 - 1.01 ГГц. Сигнал синусоидальный амплитудно модулированный несколькими частотами (низкие частоты+высшие гармоники). Несущая частота сигнала - 1 ГГц.
Ixt
Цитата(Stefan1 @ Nov 27 2012, 15:41) *
Доброго времени суток!
Подскажите код в матлабе для полосового фильтра с полосой пропускания 0.99 - 1.01 ГГц. Сигнал амплитудно модулированный несколькими частотами (низкие частоты+высшие гармоники). Несущая частота сигнала - 1 ГГц.

Воспользуйся инструментом fdatool. Так, имхо, проще.
Stefan1
Цитата(Ixt @ Nov 27 2012, 18:12) *
Воспользуйся инструментом 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);

Ixt
Цитата(Stefan1 @ Nov 28 2012, 10:25) *
А как теперь этот фильтр связать с сигналом?
Получился такой код:

У функции должен быть параметр. Жми на соседний пункт меню.
Stefan1
Цитата(Ixt @ Nov 28 2012, 11:34) *
У функции должен быть параметр. Жми на соседний пункт меню.

Не понял на какой соседний пункт жать, можно чуть подробнее? У меня функция для сигнала получается в ходе решения уравнений, мне надо этот фильтр наложить на сигнал в коде матлаба.
V_G
Помещаете рассчитанные коэффициенты КИХ-фильтра в массив Num, после чего вводите:
y=filter(Num,1,x), где y - выходной сигнал, x - входной сигнал. Если фильтр - БИХ, вместо единицы пишете коэффициенты а

ЗЫ. А аппаратно-то чем 1 ГГц фильтровать собрались?
Stefan1
Цитата(V_G @ Nov 28 2012, 13:33) *
Помещаете рассчитанные коэффициенты КИХ-фильтра в массив 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')

Цитата(V_G @ Nov 28 2012, 13:33) *
ЗЫ. А аппаратно-то чем 1 ГГц фильтровать собрались?

Мне это вообще нужно для выделения первой гармоники из спектра сигнала, т.к. простыми методами - не получается из-за сложности сигнала. Хочу посчитать мощность усилителя по первой гармонике.
V_G
Цитата(Stefan1 @ Nov 28 2012, 21:33) *
y=filter(Hd,1,x)


y=filter(b,1,x) , если массив коэффициентов - b
Stefan1
Цитата(V_G @ Nov 28 2012, 14:56) *
y=filter(b,1,x) , если массив коэффициентов - b

Благодарю за помощь!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.