Convolving in Matlab

3 visualizzazioni (ultimi 30 giorni)
Cole
Cole il 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.

Risposta accettata

Andrew Newell
Andrew Newell il 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 Commento
Cole
Cole il 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?

Accedi per commentare.

Più risposte (2)

Qiu
Qiu il 23 Dic 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 Commento
Image Analyst
Image Analyst il 24 Dic 2011
You need to pass it a grayscale image, not a color (3D) image.

Accedi per commentare.


bym
bym il 7 Apr 2011
I think you want
conv()
instead of
conv2
  1 Commento
Cole
Cole il 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.

Accedi per commentare.

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by