【发布时间】:2014-09-21 03:42:01
【问题描述】:
我有一个对称的m-by-m 矩阵A。每个元素都有一个介于 0 和 1 之间的值。我现在想选择 A 的 n 行/列,它们形成 n-by-n 子矩阵 B。
选择这些元素的标准是B 的所有元素之和必须是A 的所有可能的n-by-n 子矩阵中的最小值。
例如,假设 A 是一个 4×4 矩阵:
A = [0 0.5 1 0; 0.5 0 0.5 0; 1 0.5 1 1; 0 0 1 0.5]
而n 设置为3。那么,最好的B 是取A 的第一、第二和第四行/列的那个:
B = [0 0.5 0; 0.5 0 0; 0 0 0.5]
其中这些元素的总和为 0 + 0.5 + 0 + 0.5 + 0 + 0 + 0 + 0 + 0.5 = 1.5,它小于另一个可能的 3×3 子矩阵(例如,使用第一个,第三和第四行/列)。
我该怎么做?
这部分是数学问题,部分是 Matlab 问题。任何一个方面的帮助都会很棒!
【问题讨论】:
-
A对称性如何? -
第i^行和第i^列相同,所以
A等于A的转置。对吗? -
是的,对不起,我的错误,弄糊涂了。
-
但是您示例中的 B 实际上不是
B = [0 0.5 1; 0.5 0 0.5; 1 0.5 1]吗?我错过了什么? -
我认为 B 值是正确的(意味着它是每个定义的正确矩阵子集),它只是用第一、第二和第四行/列创建的。 (不是第一,第二和第三)