Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 找出离给定点最近的点_Matlab_Matrix - Fatal编程技术网

Matlab 找出离给定点最近的点

Matlab 找出离给定点最近的点,matlab,matrix,Matlab,Matrix,我有两个矩阵。G1 G1 = 80.00 79.43 78.89 78.38 77.90 77.45 77.03 76.63 及 我想要一个大小为8*1的结果矩阵。此外,应将G2矩阵元素与G1进行比较,并将G2到G1最近的元素填入所需矩阵中。例如,G2行的第一行有NaN,所以它保持NaN。G2的第四行有两个值,该值应与G1的第四个元素进行比较,最近的值应填入结果矩阵中。当只有一个值时,它应该保持这样的状态。当有两个以上的值时,应在矩阵中填入最接近

我有两个矩阵。G1

G1 =
   80.00
   79.43
   78.89
   78.38
   77.90
   77.45
   77.03
   76.63

我想要一个大小为8*1的结果矩阵。此外,应将G2矩阵元素与G1进行比较,并将G2到G1最近的元素填入所需矩阵中。例如,G2行的第一行有NaN,所以它保持NaN。G2的第四行有两个值,该值应与G1的第四个元素进行比较,最近的值应填入结果矩阵中。当只有一个值时,它应该保持这样的状态。当有两个以上的值时,应在矩阵中填入最接近的值

下面是所需的输出。如何更动态地完成它。我只是手工做的

  Result =   NaN
             NaN
             79.11
             78.64
             78.14
             77.46
             77.07
             76.744
试试这个:

dist = abs(bsxfun(@minus,G2,G1))
[~,col] = min(dist,[],2);
Result = diag(G2(:,col))
试试这个:

dist = abs(bsxfun(@minus,G2,G1))
[~,col] = min(dist,[],2);
Result = diag(G2(:,col))

你的例子毫无意义
G1
有8行,
G2
有7行,您的
结果
有8行。很抱歉,我错过了一行。我刚刚更新了它。感谢您的回复:)79.1168的
79.1168
来自哪里?我在你的原始数据中看不到。它只有79.11。我已经更新了。你的例子没有意义
G1
有8行,
G2
有7行,您的
结果
有8行。很抱歉,我错过了一行。我刚刚更新了它。感谢您的回复:)79.1168的
79.1168
来自哪里?我在你的原始数据中看不到。它只有79.11。我已经更新了。我的意思是输出应该是8*1。很抱歉造成混淆。@MayankLakhani看到我之前的编辑-您需要添加
diag
(或者如果您的矩阵非常大,则使用
sub2ind
),我的意思是输出应该是8*1。很抱歉造成混淆。@MayankLakhani看到我之前的编辑-您需要添加
diag
(或者如果您的矩阵非常大,请使用
sub2ind