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

用matlab如何求出一个数组中最接近某个数的两个数的下标,第1张

主要是排列组合命令 nchoosek,和 的用法 代码如下: clc;clear;n = 1:5;A = 1:5;x = nchoosek(n,3);result = A(x(:,1)) A(x(:,2)) A(x(:,3))

假设你要求的数组是A

[A1,row1]=min(A);

row=min(row1);

[minV,column]=min(A1);

这样你得到的row和column就是这个数组A的最小值的下标,而minV则是这个最小值

>> a=[2:6;1 2 -2 4 5]

a =

2 3 4 5 6

1 2 -2 4 5

>> [x,y]=min(a)%%默认是求每一列的最小值,y是每列的最小值的下标(单下标)

x =

1 2 -2 4 5

y =

2 2 2 2 2

>> [x,y]=min(a(:))%%a(:)是将a距阵变为一个列向量

x =

-2

y =

6

>> [i,j]=ind2sub(size(a),y)%%%将单下标转换为双下标,即行、列

i =

2

j =

3

>> yy=sub2ind(size(a),i,j)%%和上面的相反

yy =

6

这个是没法直接修改语言内置规则的,即下标不可能从0开始,估计你是从C语言改写,可以采用变通的方法。

以二维数组为例,定义A为mxn的矩阵,matlab默认的数组下标为行1~m ,列1~n

你所谓的下标定义为0,可以引入临时变量 s=i-1 t=j-1

i=1~m, j=1~n 则 s=0~(m-1), t=0~(n-1)

B(s,t)=A(i,j) 其中B是C语言中下标从0开始的数组,有 B(0,0)=A(1,1) B(0,1)=A(1,2)

%%%%

>> load('E:\InSAR\LMinSAR资料\中文\配准截图\etna_dat\etna_dat1mat');%%读入图像

dat1=etna_dat1(401:700,301:600);%%截取其中一部分

a=max(dat1(:))%%求取最大值

[idx,idy]=find(dat1==max(dat1(:)))%%求取最大值的下标

%%%%运行结果

a = 13847e+003 +74498e+002i

idx =155

idy =154

a=[4,1,4,2,1,4,3,4,4,4];

ind=find(a(1:end-2)==4);

ind=ind(a(ind+2)==4)

ind =

1 6 8

以上就是关于用matlab如何求出一个数组中最接近某个数的两个数的下标全部的内容,包括:用matlab如何求出一个数组中最接近某个数的两个数的下标、请教高手:matlab中如何求一个数组的最小值的下标、matlab输入两个数组,求两个数组的最小值及其下标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10134003.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存