【问题标题】:Generate matrix of random number with constraints in matlab在matlab中生成带有约束的随机数矩阵
【发布时间】:2014-04-18 09:49:21
【问题描述】:

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

  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

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

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

【问题讨论】:

  • 这是一组限制,可能会使这个“随机”的有效性失效,尤其是最后一个条件。这可能更适合 math.stackexchange.com
  • 注意:对约束有一定的约束。至少有一个:Y < X,但我很确定Z 也有一个。
  • @MZimmerman6:确实,感觉有点像数独游戏,不是吗? :p
  • 9个数字有什么区别?中心数减去 8 个邻居的总和?中心和每个邻居之间的最大差异?
  • 它们不可能是正常的(高斯)并且具有规定的绝对值之和。您的条件不兼容

标签: matlab random matrix constraints


【解决方案1】:

这是一种获取所需“随机”数字的算法。

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

根据您的限制,当然可能需要一段时间。在返回第 1 步之前,您可以添加其他步骤以查看更改现有数字是否有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 2016-02-15
    • 2018-10-24
    • 2014-10-22
    相关资源
    最近更新 更多