首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据比较的结果,而不使用循环来绘制某一颜色的点?

如何根据比较的结果,而不使用循环来绘制某一颜色的点?
EN

Stack Overflow用户
提问于 2018-04-13 13:22:19
回答 1查看 33关注 0票数 0

我使用随机点来确定曲线下的面积(Monte):

  • X: 1xn函数的x值向量
  • Y: 1xn向量y= f(x)
  • RP: m随机y的mxn矩阵

我想把RP分成RPA和RPB,这取决于它在曲线上或下面。然后用不同的颜色绘制RPA和RPB与X的对比图。此代码无法工作,因为RPA和RPB列数与X不相同:

代码语言:javascript
复制
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或类似的东西,可以计算和绘制?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-13 13:40:11

你自己回答得很好。您可以使用策略NaNs构建RPA和RPB:

代码语言:javascript
复制
% Split points (works!)
RPA = RP;
RPA(RP<=Y) = NaN;
RPB = RP;
RPB(RPB > Y) = NaN;

而不是把这个比例计算成非南:

代码语言:javascript
复制
br = sum(~isnan(RPB)) / sum(~isnan(RP)) % Ratio of points below

我得到了一个很好的图像:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49818087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档