在MATLAB中生成带有约束的随机数矩阵



我想生成一个随机数(带有mean == 0normrnd)的矩阵,该矩阵使用MATLAB(或任何其他语言)满足以下约束

  1. 矩阵中绝对值的总和必须等于 X
  2. 最大的abs(single number)必须等于Y
  3. 数字和它的8个邻居之间的区别(如果在角落为3,如果在边缘处5)必须小于Z

满足其中一个约束相对容易,但是我想不出一种满足所有这些的算法...

有什么想法?

我不确定是要编辑我的帖子还是在此处回复,所以我正在编辑... @mzimmerman6,您有一点。尽管这些约束不会产生独特的解决方案,但是我如何在不使用rand的情况下获得多个解决方案?

非常简单的3 x 3其中5是最大元素值,30是总和,而2是差异
5 4 3
4 4 2
3 2 3

rody,这实际上可能会有所帮助...我需要思考更多:)

路易斯...嗯...为什么不呢?我可以添加正态分布样本的绝对值...对吗?

这是一种算法,可以获取所需的'随机'数字。

  1. 生成一个有效数字(例如中间)
  2. 确定旁边数字之一的可行范围
  3. 如果没有范围,则转到第1步,否则会生成一个数字并继续

根据您的约束,可能需要一段时间。您可以添加另一个步骤,以查看在返回步骤1之前更改现有数字是否有帮助。

最新更新