Matlab 找出离给定点最近的点
我有两个矩阵。G1Matlab 找出离给定点最近的点,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 =
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
)