I want to do a 1D integral of some 2D data
3 次查看(过去 30 天)
显示 更早的评论
Suppose I have a function which is defined as some numerical data which is equally spaced and I wish to compute:
How would I go about it? I thought I would start something akin to:
x=linspace(-3,3,200),y=linspace(-3,3,200);
[X,Y]=meshgrid(x,y);
Z=0.5*(X.^2+Y.^2);
%This creates a plottable surface, then I tried something like:
g=trapz(Z,y,2);
but it threw up an error. Any suggestions?
0 个评论
采纳的回答
Wan Ji
2021-8-16
trapz function has been wrongly used, trapz(x_array, F(x,y)) is with . So you should do following
x=linspace(-3,3,200);
y=linspace(-3,3,100);
[X,Y]=meshgrid(x,y);
Z=0.5*(X.^2+Y.^2);
%This creates a plottable surface, then I tried something like:
g=trapz(y,Z);
plot(x,g,'r*')
hold on
g2 = 0.5*(x.^2*6 + 1/3*(3^3+3^3));
plot(x,g2, 'b--')
legend('trapz','exact')
更多回答(1 个)
Walter Roberson
2021-8-16
g=trapz(y,Z,2);
... but be careful about which dimension is x and which dimension is y. In MATLAB, rows correspond to y and columns correspond to x, and rows is the first dimension...
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!