如何用Matlab求一个数组下标的值?

作者&投稿:佘盾 (若有异议请与网页底部的电邮联系)
~

三种方法。

1、下标法(subscripts)

A(ii,jj):其中ii和jj可以是一维向量、标量、“:”号或者“end”

比如:

A(2:3,3:-1:1)表示引用数组中的2~3行,3~1列对应的元素

A(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒数第n行或列

A(1,end-1)表示引用第1行倒数第2个元素

A([2 1 3 3],[1 1 2 2 1])表示引用按两个向量引用指定的元素,即A中的第2,1,3,3行和第1,1,2,2,1列对应的元素

2、索引法(index)

A(index):index可以是任意的数组,index的元素必须是正整数,且不大于numel(A),返回的是一个尺寸与index一样的数组,下标和索引之间可以通过ind2sub和sub2ind函数相互转换。

3、布尔法(Boolean)

A(X):X是一个有0和1组成布尔型数据,且size(A)=size(X),对应位置为1则留下该数据,0则去掉,最后按A中的存储顺序,返回一个列向量。

假如说A是3*3的数组,A(logical([1 0 0;0 1 0;0 0 1])):表示引用了数组A的对角线元素,注意必须使用logical将0/1数组转换为布尔型。

扩展资料:

注意事项

Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组

A=

    8     1     6

    3     5     7

    4     9     2

Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页对应个元素的索引和下标分别为:

Element Index Subscripts

8        1      (1,1)

3        2      (2,1)

4        3      (3,1)

1        4      (1,2)

5        5      (2,2)

9        6      (3,2)

6        7      (1,3)

7        8      (2,3)

2        9      (3,3)

从上面的例子中已经很清晰的说明了下标和索引的区别了,也就是说Matlab为每个元素分配了一个唯一识别的ID(即index)。




如何用matlab求特征值?
求特征值的传统方法是令特征多项式| AE-A| = 0,求出A的特征值,对于A的任一特征值h,特征方程( aE- A)X= 0的所有非零解X即为矩阵A的属于特征值N的特征向量两者的计算是分割的,一个是计算行列式,另一个是解齐次线性方程组,且计算量都较大。使用matlab可以方便的计算任何复杂的方阵...

请问用matlab怎样求一个函数的最大值
用matlab求函数最大值的步骤如下:1.打开matlab软件,清空桌面环境;clear clc 2.定义一个符号变量:syms t 3.定义一个函数:y=t\/(1+t*t);再通过以下函数来查看上面的函数图像;ezplot(y);4.查看该函数的图像可知,函数在0到2之间有一个极值,本例求解该最大值为例;5.输入以下的指令可以求...

请问用matlab怎样求曲线斜率或切线啊?
用matlab求曲线的斜率或切线的方法,就是按照微积分的方法求解是一样的,则不过是matlab语言去描述。例如,求曲线y=x²在点(1,1)的切线方程。第一步:对方程y=x²求一次导数 >>syms x %声明变量 >>y=x^2; %函数表达式 >>dy=diff(y,1) %一次导数 y'=2*x 第二步...

用MATLAB如何在某点求导?
用matlab求函数在指定点的数值导数如下:clear;clc;syms x f = sqrt(x^2+1);diff_f = diff(f);y1 = subs(diff_f,x,1)y2 = subs(diff_f,x,2)y3 = subs(diff_f,x,3)结果:y1 =0.7071y2 =0.8944y3 =0.9487 扩展链接:MATLAB 产品族可以用来进行以下各种工作:●数值分析 ●...

如何用MATLAB求导
操作方法如下:1、打开matlab软件;2、输入指令clear;clc;清空工作空间;3、输入指令sysm x定义一个符号变量,如图所示;4、输入指令f1=atan(x),定义一个函数;5、输入指令df1=diff(f1,x)求解导函数的符号解;6、输入以下指令查看求导的结果,如图所示;subplot(1,2,1);ezplot(f1),grid on;...

如何使用matlab,求AX=B?
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值...

如何用Matlab求线性方程组的通解
如何用Matlab求线性方程组的通解 这个是线性齐次方程组的 先写m文件 function [x,y]=line_solution(A,b)[m,n]=size(A);y=[];if norm(b)>0 if rank(A)==rank([A,b])if rank(A)==n disp('方程有唯一解x');x=A\\b;else disp('方程有无穷多解,特解为x,其齐次方程组的基础解...

用matlab求函数y=2x^3-6x^2-18x+5的单调区间,极值和拐点,并画出图像...
如何用matlab求函数y=2x^3-6x^2-18x+5的单调区间,极值和拐点,并画出图像?这个问题应下列步骤完成:1、对x进行声明变量,即 syms x 2、用运算符写出y的表达式,即 y=2*x^3-6*x^2-18*x+5;3、使用ezplot函数,绘出函数图像,即 ezplot(y,[-5,5])4、使用diff函数,分别计算其一阶导数...

用matlab方法求:根据派的平方\/6=1\/1^2+1\/2^2+1\/3^2+……+1\/n^2,求...
用matlab方法求:根据派的平方\/6=1\/1^2+1\/2^2+1\/3^2+……+1\/n^2,求派的 程式码只有两行: n=1:100; test=sqrt(6*sum(1.\/(n.*n))) 测试结果: n=100时,结果= 3.1321; n=1000时,结果= 3.1406; n=10000时,结果= 3.1415: 简单解释一下:这是用向量的...

用Matlab怎么求反函数
1、我们首先需要知道在matlab中求反函数用到的是finverse函数,在命令行窗口中输入“help finverse”,可以看到函数的使用方法。2、g=finverse(f)格式,f符号函数表达式,变量x,求得的反函数g是满足g(f(x))=x的函数,输入如图代码。3、按回车键之后,可以看到求得的反函数g是asin(2\/x)。4、g=...

眉山市17389018746: MATLAB找数组中某个数的全下标 -
弘红凯思: 你说用fine找单下标,是不对的,你的意思可能是find,如: >> a=magic(3) a = 8 1 6 3 5 7 4 9 2 >> l=find(a==2) l = 9 求双下标是用ind2sub,如: >> k=ind2sub(l,size(a)) k = 3 3

眉山市17389018746: matlab中如何求一个数组的最小值的下标? -
弘红凯思: 代码如下:int min(int a[], int number) {int min=a[0]; int i=0; for(int i=0;i<number;i++) { if(min>a[i]) { min=a[i]; } } return min; } 扩展资料:注意事项 Python的min函数返回列表中的最小的项.返回列表中最小的项的索引 def indexofMin(arr): minindex...

眉山市17389018746: Matlab中怎样写函数求数组中最大K个值的下标 -
弘红凯思: A=[2,4,9,5,6,3,7] [num,val]=sort(A)num =[2 3 4 5 6 7 9] val =[1 6 2 4 5 7 3] 再取出矩阵val的后面k个元素就可以了

眉山市17389018746: 用matlab如何求出一个数组中最接近某个数的两个数的下标 -
弘红凯思: 主要是排列组合命令 nchoosek,和 .* 的用法 代码如下: clc;clear;n = 1:5;A = 1:5;x = nchoosek(n,3);result = A(x(:,1)) .* A(x(:,2)) .* A(x(:,3))

眉山市17389018746: MATLAB 从数组中随机取几个下标不同的元素 -
弘红凯思: 在matlab中,可以用rand函数来取随机值,由于下标为整数,所以用randi函数取正整数随机值.其具体实现过程为:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21% A为数组 % N为随机取值的个数 % out为取出的元素数组 function out ...

眉山市17389018746: 已知一个数组a有十个数,请输出该数组中的最小元素及其下标 -
弘红凯思: 运用matlab,程序如下 a=[1 2 35 6 -4 4 5]; [t,o]=min(a) 运行结果为t =-4,o = 5 t 为最小元素,其下标为o.

眉山市17389018746: matlab数组中求最大的几个数 并提取标号 -
弘红凯思: 你先用B=sort(A)把数组排序,然后提取第30个当坐标 就是B(30), 大于B(30)的定然就是属于最大30个以内的了. 你用find(A>B(30))就可以找到这些大于B(30)的坐标. 然后你可以根据坐标提取这些数 A(find(A>B(30))) 当然这个的前提是B(31)和B(30)不相等(数组没有两个数是相同的),不然都一样的话提取的就不是最大的30个数,而是29个数了.

眉山市17389018746: matlab 数组中求n个元素的下标, -
弘红凯思: 假设矩阵为a = [1 3 2,6 5 4] s=size(a) 先b=reshape(a , 1 ,s(1)*s(2)) c=sort(b) d=find(a>c(s-n)) d就是矩阵a最大n个值的索引 ,按照先列后行的顺序找的.先用reshape把二维转换为一维, 然后Sort, 取前面几个最大的 这是求最大的,你参考一下吧

眉山市17389018746: 求助,matlab怎样提取新数组里元素的原下标,程序纠错
弘红凯思: 标准的答案!没搞明白你到底想要达到什么效果? 你如果把sort里的rate1990test改成rate1990,返回参数是rate1990test,当然它会变,但不可能和rate1990相同,而是排过序的rate1990. 按照你现在的写法,rate1990test是从小到大排列的,尽管程序写的不太好,但可以用啊

眉山市17389018746: matlab中如何将数组下标定义为从0开始 -
弘红凯思: 这个是没法直接修改语言内置规则的,即下标不可能从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) ......

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网