
主要是排列组合命令 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输入两个数组,求两个数组的最小值及其下标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)