矩阵-向量值匹配

时间:2019-08-01 15:37:07

标签: arrays matlab for-loop matrix indexing

在我当前的项目中,我需要在矩阵内找到与各个向量值匹配的值。这是过程的一个例子。主程序让我使用lat和lon值。但是我创建了一个20x20的矩阵,然后创建了一个20x1的随机放置值数组。 当我执行for循环时,将从矩阵中的每个值中减去Leroy向量的每次迭代。第一个min函数应该从每列及其对应的索引中返回最小值。第二个min函数应从第一个min函数返回最小的总体值。以及哪个索引的值最小。 我担心的是,我不确定矩阵内的哪个整数返回了最小值。有没有办法我可以使用索引或其他方法来解决这个问题?

Matrix = magic(20);
Leroy = randi(20,20,1);
for i = 1:length(Leroy)
    [Jenkins, J] = min(min(Leroy(i) - Matrix);
end

2 个答案:

答案 0 :(得分:0)

正如克里斯·卢厄(Cris Luego)在其评论中指出的那样,由于

,您不需要for循环
Leroy(i) - Matrix

翻译成类似

  5 - [1 2 3; 4 5 6; 7 8 9]

但是,可以通过使用-Matrix来解决在min(-Matrix(:))中获得最小值索引的问题:

[minimum, minidx] = min(-Matrix(:));

但是,您将获得线性索引。如果您需要行和列的索引,请使用

  [colidx,rowidx] = ind2sub(size(Matrix), minidx);

答案 1 :(得分:0)

Matrix = magic(20);
Leroy = randi(20,20,1);
for i = 1:length(Leroy)
   [Jenkins, J] = min((Leroy(i) - Matrix).^2);
end

使用此方法将有助于获得两个数组中两个值之间的匹配或数组值与矩阵值之间的匹配