我有三个实值二维矩阵 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的最小值。 我想这将是一个受限制的优化问题,但我不熟悉这个主题。
我希望这是有道理的。
提前致谢。
答案 0 :(得分:0)
从我理解你的问题的方式来看,让我做一些假设并提出代码。
假设您的意思是,在A
中找到最接近A
最大值的点,类似于B
,并在C
中找到最接近最小值的点C
并且您希望有一个共同的阈值来设置&#34; closeness&#34;这对于A
,B
和C
的所有这三个亲密度条件都有效,您可以试试这个 -
%// 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)