0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 4
1

Нужно переделать под БИХ фильтр

27.12.2017, 15:38. Показов 1235. Ответов 3
Метки нет (Все метки)

Привет, задача такая: нужно переделать цикл в этом коде под БИХ фильтр, сейчас он сделан под КИХ, и почему то вообще не хочет пропускать синусы через заданное разностное уравнение. Помогите пожалуйста

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Fs = 44100;
t = (0:2047)/Fs;
x = sin(2*pi*1000*t)+sin(2*pi*2000*t)+sin(2*pi*3000*t);
 
b =[10.23 6 7 4 1];
a =[1.04199 2.13426 -1.19019 0.11856 -0.02964];
n = 1;
y = zeros(1,length(x));
 
for i = length(b):length(x)
    y(n) = 0;
 for j = 1:length(b)
    y(n) = y(n) + x(i-j+1) * b(j) - y(i-j+1) * a(j);
end
 n = n + 1;
end
figure; plot(y);
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2017, 15:38
Ответы с готовыми решениями:

БИХ-фильтр
Может кто подскажет, синтезировал БИХ-фильтр по аналоговому прототипу и получились очень большие...

CMSIS-DSP и БИХ фильтр
Всем доброго времени суток! Кто-нибудь работал с CMSIS-DSP и реализацией БИХ фильтра? Есть...

Нужно переделать под С
Нужно код с++ переделать на с #include <stdio.h> #include <locale.h>//для языка #include...

Под С++ нужно переделать
while pos(' ',s)>0 do{пока есть пробелы} begin s1:=copy(s,1,pos(' ',s)-1);{копируем первое...

3
1195 / 853 / 412
Регистрация: 21.10.2012
Сообщений: 2,462
27.12.2017, 17:19 2
Лучший ответ Сообщение было отмечено Warsyp как решение

Решение

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Fs = 44100;
t = (0:2047)/Fs;
signal = sin(2*pi*1000*t)+sin(2*pi*2000*t)+sin(2*pi*3000*t);
 
% b =[10.23 6 7 4 1];
% a =[1.04199 2.13426 -1.19019 0.11856 -0.02964];
y1 = 0;
y2 = 0;
y3 = 0;
y4 = 0;
out = zeros(1,lenth(signal));
 
for i = 1:length(signal)
    x = signal(i);
    y0 = x * b(1) + y1;
    y1 = b(2) * x - a(2) * y0 + y2;
    y2 = b(3) * x - a(3) * y0 + y3;
    y3 = b(4) * x - a(4) * y0 + y4;
    y4 = b(5) * x - a(5) * y0;
    out(i) = y0 * a(1);
end
Но с вашими коэффициентами a и b ничего не получилось. Сам зашел в fdatool, получил коэффициенты для ФНЧ с частотой среза 1500 Гц и всё заработало. Для справки:
Matlab M
1
2
a = [1 -3.44204535916709 4.47656802745901 -2.60429526749041 0.571373704420110];
b = [0.000100069076351145 0.000400276305404580 0.000600414458106869 0.000400276305404580 0.000100069076351145];
1
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
27.12.2017, 20:44 3
Цитата Сообщение от Warsyp Посмотреть сообщение
Помогите пожалуйста
А чем помочь?
0
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 4
28.12.2017, 07:27  [ТС] 4
Огромное вам спасибо, скорее всего в расчётах ошибку допустил, у меня по идее fc=1500 и fз=3000, надо будет пересчитать
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2017, 07:27
Помогаю со студенческими работами здесь

Нужно переделать программу с С++ под С
Доброе утро форумчани! Есть программа написанная на С++ #include <iostream> #include <string>...

нужно компонент переделать под XE5
имеется компонент на делфи 7 ну там кнопки чекбоксы,вот их нужно переделать под xe5 кто...

Нужно переделать под 2х мерный массив
задача следующая, используя функции сортировки масcива, отсортировать строки матрицы есть вот...

Нужно переделать массив под строки
У меня вводится по одному символу, а надо, чтобы вводилось строкой для работы фильтра: class...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru