MATLAB Answers

FFT Convolution on Wav File

4 views (last 30 days)
Matthew Tindall
Matthew Tindall on 5 Dec 2016
Commented: Massimo Zanetti on 5 Dec 2016
Seem to get a Vercat error on line 10 saying there is a problem with 'X = fft( [x ; zeros(length(brirL),1) ]); ' however i just can't see it and have been trying for a while now. Here is the code, Thanks in advanced, regards Matt
close all clear all
[x Fs]=audioread('drums.wav'); brir = audioread('HRIR_C.wav'); brirL = brir(:,1); brirR = brir(:,2);
L = length(x) + length(brirL) -1 ; % Output data length X = fft( [x ; zeros(length(brirL),1) ]); HL = fft( [ brirL ; zeros(length(x) ,1) ] ); HR = fft( [ brirR ; zeros(length(x) ,1 ) ] );
outL = zeros(L,1); % output buffer outR = zeros(L,1);
outL = ifft(X .* HL); % multiplication of fft results & ifft outR = ifft(X .* HR);
mainOut = [outL outR];
sound(mainOut,Fs)

  0 Comments

Sign in to comment.

Answers (1)

Massimo Zanetti
Massimo Zanetti on 5 Dec 2016
Is your audio file x (loaded with [x Fs]=audioread('drums.wav'); ) stereo? Because in this case the line
X = fft( [x ; zeros(length(brirL),1) ]);
will of course throw an error, because you cannot vertcat a 2-column matrix with a one-column matrix...

  2 Comments

Matthew Tindall
Matthew Tindall on 5 Dec 2016
The file is mono I believe
Massimo Zanetti
Massimo Zanetti on 5 Dec 2016
Do you believe? Let's try a more deterministic check, what's the output of size(x)?

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!