在特定点密度之后生成1D不规则网格

时间:2015-08-03 04:38:23

标签: matlab

MATLAB有一些用于构建一维网格(linspace,logspace,grid,ets)的函数。我需要一个函数来生成具有特定点分布密度的不规则一维网格。

让我们说:nonelinspace(a, b, N, @distr),其中ab是区间,N - 点数,distr是点密度函数(多项式,高斯,双曲线,......)。

这可以在MATLAB中完成吗?

补充说明: 我们有一个区间[a,b]除以N = 1000点:linspace(a, b, N);设置单元格数(n = 100)和一些密度分布函数:distr = @(o) exp(-1e-3*((0:o) - .5*o).^2)就像这样。 表达式N*distr(n)/sum(distr(n))(或round(N*distr(n)/sum(distr(n))))给出了每个单元格中的点数。并且我们需要在整个区间[a,b]中分发事件点。

1 个答案:

答案 0 :(得分:1)

我不确定你是如何想到你想要制作的网格的抽样,所以我认为根据你的意思随机抽样就是你的意思(如果我误解了,请纠正我)。

所以你实际上确实有一些内置的matlab函数,例如[a b]点的N区间内的均匀随机分布

dist = (b-a).*rand(N,1) + a;

相同的技巧可以使用randn应用于正态分布(或高斯分布),或使用poissrnd等应用Posisson dist(请参阅更多选项herehere)。其他情况可以使用unifrom dist规则与特定情况的扭曲。