我使用随机点来确定曲线下的面积(Monte):
我想把RP分成RPA和RPB,这取决于它在曲线上或下面。然后用不同的颜色绘制RPA和RPB与X的对比图。此代码无法工作,因为RPA和RPB列数与X不相同:
clf
f = @(x) sin(x/10) + cos(x/60); % Function
xMin = 1; xMax = 100; % x interval
X = [xMin:xMax];
Y = f(X);
plot(X,Y), hold on % Plot function
yMin = min(Y); yMax = max(Y); % Axes limits
set(gca, 'xlim', [xMin, xMax], 'ylim', [yMin, yMax])
m = 20; % Random points per x value
RP = rand(m, columns(X)) .* (yMax-yMin) .+ yMin;
% Split points (doesn't work)
RPA = RP(RP>Y);
RPB = RP(RP<=Y);
br = size(RPB) / size(RP) % Ratio of points below
a = (xMax - xMin) * (yMax - yMin) * br % Area below
% Plot points
plot(X, RPA, 'r.') % Above
plot(X, RPB, 'g.') % Below是否有可能建立RPA和RPB,使它们的大小与RP相同,排除点y是NaN或类似的东西,可以计算和绘制?
发布于 2018-04-13 13:40:11
你自己回答得很好。您可以使用策略NaNs构建RPA和RPB:
% Split points (works!)
RPA = RP;
RPA(RP<=Y) = NaN;
RPB = RP;
RPB(RPB > Y) = NaN;而不是把这个比例计算成非南:
br = sum(~isnan(RPB)) / sum(~isnan(RP)) % Ratio of points below我得到了一个很好的图像:

https://stackoverflow.com/questions/49818087
复制相似问题