用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,应该怎么得到这两个数并返回这两个数的下标???
展开
2个回答
展开全部
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是这两个数的下标!
祝你学习愉快!
B=abs(A-82);
[x,index]=sort(B);
A1=[A(index(1)) A(index(2))]
A2=[index(1) index(2)]
A1是最接近的两个数,A2是这两个数的下标!
祝你学习愉快!
追问
多谢!!
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询