Asked by sara s
on 19 Dec 2011

Hello everybody

Please,I want to do the convolution on my speech signal using conv() How can I do that??

This is my signal

f=8000;

b=8;

[s1,f,b]=wavread('C:\Users\N\Desktop\sara.wav');

*No products are associated with this question.*

Answer by Naz
on 19 Dec 2011

Accepted Answer

First of all, this

f=8000; b=8;

is useless information because it will be rewritten anyway below, unless this information is given to you and you don't fully describe the required task. ASSUMING that your professor wants you to perform convolution of the recorded signal with itself, you can perform this:

[s1,f]=wavread('C:\Users\N\Desktop\family.wav'); s2 = conv(s1(1,:),s1(1,:)); %using all columns from the first row subplot(2,1,1) plot(s1(1,:)) subplot(2,1,2) plot(s2)

Of course, the resulting signal will be nothing like the initial signal.

sara s
on 19 Dec 2011

I have this error

??? Error using ==> conv at 27

A and B must be vectors.

Naz
on 19 Dec 2011

Try replacing both s1 with s1'

Walter Roberson
on 19 Dec 2011

Sara has a two-channel wav file so s1 is not a vector.

Log in to comment.

Answer by Walter Roberson
on 19 Dec 2011

[conv(s1(:,1),s(:,1), 'same'), conv(s1(:,2), s1(:,2), 'same')]

That is for convolving each channel with itself. If for some reason you wanted to convolve left with right, then it would be

conv(s1(:,1), s1(:,2), 'same')

sara s
on 19 Dec 2011

I have this error

??? Error: An array for multiple LHS assignment cannot contain numeric value.

Walter Roberson
on 19 Dec 2011

Timothy Dixon
on 18 May 2012

@ sara correct the type error from walter conv(s1(:,1),s(:,1)

correction

conv(s1(:,1),s1(:,1),

s1 was missing. if it does not work, then try to upgrade the version of Matlab that support the recording card system

Log in to comment.

Answer by Image Analyst
on 19 Dec 2011

How about:

clc; % Clear the command window. close all; % Close all figures (except those of imtool.) imtool close all; % Close all imtool figures. clear; % Erase all existing variables. workspace; % Make sure the workspace panel is showing. fontSize = 24;

fullFileName = 'C:\Users\N\Desktop\sara.wav';

if exist(fullFileName, 'file') [s1,f,b]=wavread(fullFileName); subplot(2,1,1); plot(s1); grid on; title('Original Signal', 'FontSize', fontSize); windowSize = 201; % or whatever. s1_filtered = conv(s1, ones(1, windowSize ) / windowSize ); subplot(2,1,2); plot(s1_filtered); grid on; title('Filtered Signal', 'FontSize', fontSize); % Enlarge figure to full screen. set(gcf, 'units','normalized','outerposition',[0 0 1 1]); % Maximize figure. set(gcf,'name','Demo by ImageAnalyst','numbertitle','off') else message = sprintf('File not found:\n%s', fullFileName); uiwait(warndlg(message)); end

sara s
on 19 Dec 2011

Walter Roberson
on 19 Dec 2011

There are a number of different filters shown at http://web.mit.edu/1.130/WebDocs/1.130/Software/Examples/example1.m

In that code, you want the vectors that are directly underneath each comment. For example the line under '%Downsampling' is

x = [-1 0 9 16 9 0 -1] / 16;

and that x would be suitable to convolve against.

sara s
on 20 Dec 2011

wow Walter thanks so so much ,that is so benefit

Thanks a lot

Log in to comment.

Related Content

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
## 5 Comments

## Naz (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/24262-convolution#comment_53171

What do you want to convolve your signal with?

## sara s (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/24262-convolution#comment_53173

I know the convolution must be with something

But my prof ask me to do convolution only for speech signal and for that I'm confused

## Naz (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/24262-convolution#comment_53174

With a sinusoid of 8kHz? Something like modulation? Theoretically, if your voice contains frequencies over 4kHz you will have aliasing. Also, you need to choose how to truncate your sinusoidal signal (the length in time)

## Naz (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/24262-convolution#comment_53179

Convolution with itself? Then just do conv(s1,s1)

## sara s (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/24262-convolution#comment_53182

Yes,I did that previously

But I have this error

??? Error using ==> conv at 27

A and B must be vectors.

Log in to comment.