首页 > 解决方案 > 如何使用matlab找到矩阵的接近值

问题描述

假设我有一个数据包含一个矩阵

a = [ 401.2 405.5 408.6 411.9 415.33 418.6 422.04 425.39; 0.011 0.022 0.033 0.044 0.055 0.066 0.077 0.088]
b = [ 400;
      410;
      420];

是否可以创建看起来像这样的 C 矩阵,其中 A 上最接近的 B 值将放在 C 上。

c = [400 410 420; 0.011 0.44 0.77]

例如,B 上的值为 400,A 最接近的值为 401.2,那么在矩阵 C 中,我将放入 401.2 和 0.011。

谢谢你

标签: matlabmatrix

解决方案


试试这个。我得到的答案c与您给出的矩阵不匹配。

a = [ 401.2 405.5 408.6 411.9 415.33 418.6 422.04 425.39; 
      0.011 0.022 0.033 0.044 0.055 0.066 0.077 0.088]
b = [ 400;
      410;
      420];

c = zeros(2,length(b));

for i = 1:length(b)
   [min_error, ind] = min(abs(a(1,:) - b(i)));
   c(:,i) = [b(i); a(2,ind)];
end

这是正确的c矩阵:

c = [400.0000,  410.0000,  420.0000;
     0.0110,      0.0330,    0.0660];

推荐阅读