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

2 vues (au cours des 30 derniers jours)
Mark Lepage
Mark Lepage le 22 Nov 2017
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 commentaires
Stephen23
Stephen23 le 22 Nov 2017
Please show the complete error message. This means all of the red text.
Mark Lepage
Mark Lepage le 22 Nov 2017
Modifié(e) : Mark Lepage le 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.

Connectez-vous pour commenter.

Réponse acceptée

Mark Lepage
Mark Lepage le 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);

Plus de réponses (0)

Catégories

En savoir plus sur Numerical Integration and Differentiation dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by