在matlab中使用约束生成随机数矩阵

时间:2014-03-13 14:51:15

标签: matlab random matrix constraints

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

  1. 矩阵中绝对值的总和必须等于X
  2. 最大的abs(single number)必须等于Y
  3. 数字与其8个邻居之间的差异(如果在角落,则为3,如果在边缘,则为5)必须小于Z
  4. 满足其中一个约束会相对容易,但我无法想到满足所有约束的算法......

    有什么想法吗?

    我不确定是要编辑我的帖子还是回复此处,所以我正在编辑... @ MZimmerman6,你有一点意见。虽然这些限制不会产生独特的解决方案,但如何在不使用rand的情况下获得多种解决方案?

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

    Rody,这实际上可能会有所帮助......我需要多考虑一下:)

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

1 个答案:

答案 0 :(得分:1)

这是一个获取随机'的算法。你需要的数字。

  1. 生成有效数字(例如在中间)
  2. 确定其旁边某个数字的可行范围
  3. 如果没有范围,则转到步骤1,否则生成一个数字并继续
  4. 根据您的限制,当然可能需要一段时间。您可以添加另一个步骤,以查看在返回步骤1之前更改现有数字是否有帮助。