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

6 ビュー (過去 30 日間)
Mark Lepage
Mark Lepage 2017 年 11 月 22 日
回答済み: Mark Lepage 2017 年 11 月 22 日
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 件のコメント
Stephen23
Stephen23 2017 年 11 月 22 日
Please show the complete error message. This means all of the red text.
Mark Lepage
Mark Lepage 2017 年 11 月 22 日
編集済み: Mark Lepage 2017 年 11 月 22 日
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.

サインインしてコメントする。

採用された回答

Mark Lepage
Mark Lepage 2017 年 11 月 22 日
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);

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by