Convolving in Matlab

8 views (last 30 days)
Cole
Cole on 7 Apr 2011
This is the code.
clear all;
i = 0;
j = 0;
folder = uigetdir;
Loaddata(folder)
for i=1:4833
%Reads in rows of numbers representing waveforms into a new vector
A(i,:) = Acquisitions(i,:)-32000;
end
t = -pi:0.01:pi;
B = tripuls(t);
for j=1:4833
W(j,:) = conv2(B,A(j,:));
end
And it keeps giving me this error: ??? Undefined function or method 'conv2' for input arguments of type 'int16'.
Error in ==> readinmaqscall at 18 W(j,:) = conv2(B,A(j,:));
So basically I am trying to convolve a triangular pulse with a bunch of different waveforms I have collected and this is the best way I know of going about it. It keeps giving me an error based on the type of data in the vectors. I am unsure what format it needs to be in for convolving.

Accepted Answer

Andrew Newell
Andrew Newell on 7 Apr 2011
You should convert to double:
W(j,:) = conv(double(B),double(A(j,:)));
You can use conv2. As for the type, if I enter something like
conv(unit8(u),v)
for some vectors u and v, I get the message:
Warning: CONV2 on values of class UINT8 is obsolete.
Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.
So that gives you some idea of the options.
EDIT: I don't know why conv2 doesn't accept integer types because it is a built-in function. However, if you input a double array with integer values, it will return a double array with integer values (see the article in Steve on Image Processing for an example).
  1 Comment
Cole
Cole on 7 Apr 2011
Thanks, I just realized that it worked with doubles, is there a reason for this? is a double all you can use with conv?

Sign in to comment.

More Answers (2)

Qiu
Qiu on 23 Dec 2011
I meet the same problem.
MATLAB keeps showing:
Undefined function or method 'conv2' for input arguments of type 'double' and attributes 'full 3d real'
  1 Comment
Image Analyst
Image Analyst on 24 Dec 2011
You need to pass it a grayscale image, not a color (3D) image.

Sign in to comment.


bym
bym on 7 Apr 2011
I think you want
conv()
instead of
conv2
  1 Comment
Cole
Cole on 7 Apr 2011
I am sorry I forgot to mention it but I have tried conv() as well and it gives me the same error.

Sign in to comment.

Products

Community Treasure Hunt

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

Start Hunting!