matlab中,如何确定向量中第二大数的位置
发布网友
发布时间:2022-05-16 17:59
我来回答
共3个回答
热心网友
时间:2023-11-12 07:17
思路:先找到第一大的数,然后排除第一大的数。这时最大的数就是第二大的数。
考虑到第一大的数,或者第二大的数,可能同一个数在向量中出现多次,不建议使用max返回的下标,建议使用find函数。
给出代码如下:
clc;clear;
a=randi(10,1,10)%生成随机整数向量
[t,index]=sort(a);%向量升序排序
index_m=find(t==t(end));%找到最大值占有的位置
target=t(index_m(1)-1)%找到第二大的值并显示
index(t==target)%显示第二大的值在原向量的位置
运行结果如下:
a
=
5
5
7
8
8
3
7
7
2
2
target
=
7
ans
=
3
7
8
如果使用max返回的位置,由于max只返回一个最大值的位置,当有多个最大值时会失效。
热心网友
时间:2023-11-12 07:18
你不想添加数组的话,
也可以,用sort和find联合。
aa=sort(a);
find(a==aa(end-1))
或者你先find一次,然后将最大位置的值去掉或者设成Nan之前的数。但如果有多个并列第一或第二,你的结果自己得注意一下。
热心网友
时间:2023-11-12 07:18
采用函数subplot(N,M,N*M)
N为窗口水平分割的图像数目,M为窗口竖直分割的图像数目,后面的N*M为第几个图像
例如:
x=[1:10];
subplot(211)
plot(x,y,'r')
subplot(212)
plot(x,2*y,'m')