Фильтрация звукового сигнала Matlab

Как можно реализовать фильтрацию зашумленного реального сигнала используя при этом лишь код? При работе с гармоническими сигналами все просто и все работает. Из-за того, что реальный сигнал намного больше матлаб не пропускает работу кода. Ниже прикреплен код для гармонического сигнала. Для решения данной задачи я использовал audioread для чтения сигнала, а также нормализацию сигнала и зашумление при помощи imnoise, а дальше, при создании матрицы А, программа ломается, так как требуется 79380x79380.

clc
clear

Fsample = 1000; %Частота дискретизации
f = 20; %Частота колебаний
t = 0:1/Fsample:2; % Временная ось
x1 = sin(2*pi*f*t); % Гармонический сигнал
x3 = x1 + randn(size(t)); % Гармонический сигнал с шумом
figure(1), plot(t,x1), title("Гармонический сигнал")
figure(2), plot(t,x3), title("Гармонический сигнал с шумом")

v1 = 0.0380*pi;
v2 = 0.0423*pi;
N=length(t);
A=zeros(N,N);
for i=1:N
   for k=1:N
        if(i==k)
            A(i,k)=(v2-v1)/pi;
        else
            A(i,k)=(sin(v2*(i-k))-sin(v1*(i-k)))/(pi*(i-k));
        end
    end
end
y=x3*A;
figure(3),plot(t,y), title("Выходная последовательность после оптимальной фильтрации");

Необходимо преобразовать под звуковой сигнал.


Ответы (0 шт):