在特定约束下搜索Matlab中多个二维矩阵的公共索引

时间:2014-05-17 20:35:56

标签: matlab matrix mathematical-optimization

我有三个实值二维矩阵 A B C ,它们是两个向量 q (长度 N )和 w (长度 M )。因此,所有矩阵都是 N X M 。由于问题的复杂性,我不知道这些函数是否是凸的并且可能有几个局部最大值/最小值。

在Matlab中,找到满足某些给定条件的三个矩阵中的值的索引(例如,大于实际值 a b 或< em> c ),我用

[q_idxs, w_idxs] = find( (A > a) & (B > b) & (C > c) );

使用这些索引,我找到 q w 的值,以便矩阵满足约束条件。

但是,这些限制可能会非常严格。 我现在想要找到最接近矩阵的最大值和最小值的点的索引。像

这样的东西
[q_idxs, w_idxs] = findClosestIdx(A, max(A),B, max(B),C, min(C) );

将找到最接近A的最大点,B的最大值和C的最小值。 我想这将是一个受限制的优化问题,但我不熟悉这个主题。

我希望这是有道理的。

提前致谢。

1 个答案:

答案 0 :(得分:0)

从我理解你的问题的方式来看,让我做一些假设并提出代码。

假设您的意思是,在A中找到最接近A最大值的点,类似于B,并在C中找到最接近最小值的点C并且您希望有一个共同的阈值来设置&#34; closeness&#34;这对于ABC的所有这三个亲密度条件都有效,您可以试试这个 -

%// th is the common threshold of "closeness" for A, B and C

condmat = ((max(A(:))-A) <th) & ((max(B(:))-B) <th) & ((C-min(C(:))) <th)
[q_idxs, w_idxs] = find(condmat)