用matlab如何求出一个数组中最接近某个数的两个数的下标??

比如:1891881871841781691551371189980645139301012152030446386112136157171180185189190190... 比如:189 188 187 184 178 169 155 137 118 99 80 64 51 39 30 10 12 15 20 30 44 63 86 112 136 157 171 180 185 189 190 190 191 比如这个数组中最接近82的两个数是80 和 86,应该怎么得到这两个数并返回这两个数的下标??? 展开
 我来答
ruifengcao
推荐于2017-11-25 · TA获得超过9489个赞
知道大有可为答主
回答量:3579
采纳率:33%
帮助的人:2052万
展开全部
A= [189 188 187 184 178 169 155 137 118 99 80 64 51 39 30 10 12 15 20 30 44 63 86 112 136 157 171 180 185 189 190 190 191];
B=abs(A-82);
[x,index]=sort(B);
A1=[A(index(1)) A(index(2))]
A2=[index(1) index(2)]

A1是最接近的两个数,A2是这两个数的下标!

祝你学习愉快!
追问
多谢!!
lengyekuyu86
2012-03-25 · TA获得超过351个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:170万
展开全部
clear all
clc

arr = [189 188 187 184 178 169 155 137 118 99 80 64 51 39 30 10 12 15 20 30 44 63 86 112 136 157 171 180 185 189 190 190 191];
[a,b] = size(arr);
arr(b+1)=82; %把元素82添加到数组中去
sorted_arr = sort(arr);
[a,b] = size(sorted_arr);
for i = 1: b
if( sorted_arr(i) == 82)
index = i;
break;
end
end
index1 = index-1;
index2 = index+1;
disp('82旁边的两个数是:')
num1 = sorted_arr(index1)
num2 = sorted_arr(index2)
disp('82旁边的两个数的下标是:')
index1
index2
更多追问追答
追问
要求的下标是这两个数在原来数组中的下标。
追答
clear all
clc

arr = [189 188 187 184 178 169 155 137 118 99 80 64 51 39 30 10 12 15 20 30 44 63 86 112 136 157 171 180 185 189 190 190 191];
[a,b] = size(arr);
arr(b+1)=82; %把元素82添加到数组中去
sorted_arr = sort(arr);
[a,b] = size(sorted_arr);
for i = 1: b-1
if( sorted_arr(i) == 82)
index = i;
break;
end
end
index1 = index-1
index2 = index+1
disp('82旁边的两个数是:')
num1 = sorted_arr(index1)
num2 = sorted_arr(index2)
% 从原来的数组arr中寻找num1和num2所在的下标
for i = 1: b
if( arr(i) == num1)
index1 = i;
elseif( arr(i) == num2)
index2 = i;
end
end
disp('82旁边的两个数的下标是:')
index1
index2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式