Clear Filters
Clear Filters

I can't seem to find the error in my program.

4 views (last 30 days)
My program looks like this, its supposed to take the input signal and output signal after convolution and graph them versus a variable.
function graphconv(~)
L=200;
K=50;
n=0:L-1;
z = double(rem(n,K) < K/2);
h=@(n) 1/15 .* n>=0&&n<=14;
y = conv(h,z);
plot(n,z,'r',n,y,'b')
but i keep getting these errors and i can't seem to understand what they mean. I already tried googling it but to no avail.
ERROR CODES:
>> graphconv
Input arguments to function include colon operator. To input the colon character,
use ':' instead.
Error in conv (line 43)
c = conv2(a(:),b(:),shape);
Error in graphconv (line 11)
y = conv(h,z);

Accepted Answer

Star Strider
Star Strider on 17 Feb 2018
You are passing a function handle as an argument to conv. That is throwing the error.
Pass the function with an argument (so it returns a value) instead:
h=@(n) 1/15 .* ((n>=0) & (n<=14));
y = conv(h(n),z, 'same');
Use only one ‘&’ in ‘h’ to test vectors. (Using ‘&&’ requires logical arguments, and you have a vector of numeric arguments.) I added the 'same' argument because that then works in your plot call without problems. If you want a different plot, you will have to call it with either one argument (probably ‘z’), or two equal-length arguments.
  6 Comments
Santos Tapia
Santos Tapia on 19 Feb 2018
No need to apologize, thank you very much you've been a great deal of help and have helped alleviate any confusion I previously had!

Sign in to comment.

More Answers (2)

Walter Roberson
Walter Roberson on 17 Feb 2018
What it is really getting at is that you cannot conv() a function handle on a matrix. The firs two arguments to conv must be numeric vectors or arrays.
It appears to me that you probably want
conv(z, ones(1,15)/15)
and that possibly you might want to add the 'same' or 'valid' option in the third parameter.
  4 Comments
Santos Tapia
Santos Tapia on 17 Feb 2018
I tried the suggested code but the output isn't quite correct perhaps it might be some of the parameters I set but i'm not sure
Walter Roberson
Walter Roberson on 18 Feb 2018
y = conv(z, [ones(1,15)/15, zeros(1, L-15)], 'same');

Sign in to comment.


Image Analyst
Image Analyst on 17 Feb 2018
h needs to be an actual numerical array, not a function defnintion. Try
h = 1/15 .* n>=0&&n<=14;
instead.
  3 Comments
Santos Tapia
Santos Tapia on 17 Feb 2018
I'm attempting to recreate this function on matlab but I can't find out how to do it properly.
Walter Roberson
Walter Roberson on 17 Feb 2018
h = @(n) 1/15 .* (n>=0 & n<=14);
However, you still cannot convolve with that.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!