Matlab 如何创建有边界的随机点?

Matlab 如何创建有边界的随机点?,matlab,random,bounds,Matlab,Random,Bounds,我想在下限[lx,ly,lz]和上限[ux,uy,uz]之间创建100个随机的三维点 我使用的代码如下 noPoints = 100; LB = [lx, ly, lz]; UB = [ux, uy, uz]; repmat(UB-LB,noPoints,1).*rand(noPoints,3) + repmat(LB,noPoints,1); 但是,我刚刚知道以下代码 repmat(UB-LB,noPoints,1).*rand(noPoints,3) + LB; 给出了相同的结果。 这让

我想在下限[lx,ly,lz]和上限[ux,uy,uz]之间创建100个随机的三维点

我使用的代码如下

noPoints = 100;
LB = [lx, ly, lz];
UB = [ux, uy, uz];
repmat(UB-LB,noPoints,1).*rand(noPoints,3) + repmat(LB,noPoints,1);
但是,我刚刚知道以下代码

repmat(UB-LB,noPoints,1).*rand(noPoints,3) + LB;
给出了相同的结果。 这让我意识到“将行向量添加到矩阵中与将行向量添加到矩阵的每一行向量中是相同的。” 在这里,我有一个新的好奇心。 是否有任何方法可以完全删除函数“repmat”? 其实

(UB-LB).*rand(noPoints,3) + LB;
由于两个操作数的维数设置不正确,因此无法正常工作

是否有一个快速、干净且简单的代码,可以在边界约束下生成多个随机点???

解决方案:

(UB-LB).*rand(noPoints,3) + LB;
由于隐式扩展,在R2016b和更高版本的MATLAB中工作

在以前的版本中,您可以使用:

从MATLAB R2017b开始,您可以使用:

解决方案:

(UB-LB).*rand(noPoints,3) + LB;
由于隐式扩展,在R2016b和更高版本的MATLAB中工作

在以前的版本中,您可以使用:

从MATLAB R2017b开始,您可以使用:


哦,我的天哪,它起作用了吗???Super-nice MATLAB(虽然对许多“for”语句不好)最近MATLAB jit编译器已经过优化,for循环速度很快。尽管如此,尽管代码相同,但visual C环境中的代码比MATLAB环境中的代码要快得多。因此,由于易于实现和良好的绘图功能,我最初在Matlab中制作所有内容,然后在C中重新制作相同的内容。尽管我使用的是最新版本的Matlab,但C速度要快得多。。。。(可能是因为我的新代码。)哦,天哪,它工作了吗???Super-nice MATLAB(虽然对许多“for”语句不好)最近MATLAB jit编译器已经过优化,for循环速度很快。尽管如此,尽管代码相同,但visual C环境中的代码比MATLAB环境中的代码要快得多。因此,由于易于实现和良好的绘图功能,我最初在Matlab中制作所有内容,然后在C中重新制作相同的内容。尽管我使用的是最新版本的Matlab,但C速度要快得多。。。。(可能是因为我的新手代码。)
rescale(rand(noPoints,3), LB, UB, 'InputMin', 0, 'InputMax', 1)