Calculating gradient of a matrix - too many outputs... Not sure why?

10 views (last 30 days)
Hello,
I have calculated a result matrix using the integrating function on matlab, however when I try to calculate the gradient of the result matrix, it says I have too many outputs.
My code is as follows:
x = linspace(-1,1,40);
y = linspace(-2,2,40);
for ii = 1:numel(x);
for jj = 1:numel(y)
fun = @(x) x(ii) + y(jj)
V(ii,jj) = integral(fun, 0, 2());
end
end
[qx,qy] = -gradient(V);
I tried to set up a meshgrid first to do my calculation over x and y, however the integral matlab function couldn't handle a meshgrid.
Any idea how I could calculate the gradient of my resulting V function?
Note that I have replaced my actual function with a more simple function. I could not calculate the integral of my function directly and thus am resorting to numerical integration.
  2 Comments
Stephen23
Stephen23 on 22 Nov 2017
Please show the complete error message. This means all of the red text.
Mark Lepage
Mark Lepage on 22 Nov 2017
Edited: Mark Lepage on 22 Nov 2017
Hey Stephen, my apologies, I had an error in my above code (I have fixed it)
But here is the complete error message:
>> [qx,qy] = -gradient(V);
Error using -
Too many output arguments.

Sign in to comment.

Accepted Answer

Mark Lepage
Mark Lepage on 22 Nov 2017
I can't believe I didn't notice this,
But the error stems from the negative sign I had in front of the gradient function.
I removed this, and everything works great.
x = linspace(-1,1,40);
y = linspace(-2,2,40);
for ii = 1:numel(x);
for jj = 1:numel(y)
fun = @(x) x(ii) + y(jj)
V(ii,jj) = integral(fun, 0, 2());
end
end
[qx,qy] = gradient(V);

More Answers (0)

Community Treasure Hunt

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

Start Hunting!