有一个4*5矩阵,用MATLAB编程求出其最大值及其所在的位置
举个例子,希望有所帮助。代码% 有一个4行5列的矩阵,编程求出其最大值以及最大值所处位置
clc; clear all;
A = rand(4, 5);
m = A(1); ind = [1 1];
for i = 1 : size(A, 1)
for j = 1 : size(A, 2)
if m < A(i, j)
m = A(i, j);
ind = [i j];
end
end
end
m
ind
A(ind(1), ind(2))
结果
楼上麻烦了点吧,这样就可以了。
假设矩阵为x,则最大值为max(max(x))。
所在位置为:[rows,cols]=find(x==max(max(x)))。
嗯,这样就可以啦。
MATLAB求最大值直接调用求最值的函数 max 函数就好了。例如矩阵为 A ,那么求最值即为 max_A = max( max(A) ) , [m,n] = find( max_A == A )
程序中出错的原因可能是因为第一行结束的分号是中文分号,换成非英文分号就好。
MATLAB 中的 max 函数是求最大值的函数。
1、如果 A 是向量,则 max(A) 返回 A 的最大值。
2、如果 A 为矩阵,则 max(A) 是包含每一列的最大值的行向量。
3、如果 A 是多维数组,则 max(A) 沿大小不等于 1 的第一个数组维度计算,并将这些元素视为向量。此维度的大小将变为 1,而所有其他维度的大小保持不变。如果 A 是第一个维度长度为零的空数组,则 max(A) 返回与 A 大小相同的空数组。
这也是求矩阵的最大值需要使用两个 max 函数的原因。使用 find 函数可以找到矩阵中等于最大值的位置。
扩展资料:
max函数的其他用法:
1、M = max(A,[],dim) 沿着维度 dim 返回最大元素。例如,如果 A 为矩阵,则 max(A,[],2) 是包含每一行的最大值的列向量。
2、M = max(A,[],nanflag) 指定在计算中包括还是忽略 NaN 值。例如,max(A,[],'includenan') 包括 A 中的所有 NaN 值,而 max(A,[],'omitnan') 忽略这些值。可以指定使用 nanflag 选项时的运算维度。
3、[M,I] =max(___) 使用先前语法中的任何输入参数,查找 A 的最大值的索引,并在输出向量 I 中返回这些索引。如果最大值出现多次,则 max 返回对应于第一次出现位置的索引。
4、C = max(A,B) 返回从 A 或 B 中提取的最大元素的数组。
参考资料:MATLAB文档中心
输入该行后面的分号是错误的。它不应该是中文的。英语角应该是一半。或者简单地删除分号。
运行结果是:a =
1 2 3 4 5
2 3 4 5 6
1 4 3 3 2
1 3 5 7 3
max =7
maxi =4
maxj =4
扩展资料:
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
a=floor(1+9*rand(4,5))
max=a(1,1);
maxi=1;
maxj=1;
for i=1:4
for j=1:5
if a(i,j)>max
max=a(i,j);
maxi=i;
maxj=j;
end
end
end
max
maxi
maxj
注:你的问题错在第一句后多了一个中文的。
扩展资料:
matlab中Max的用法
一、求矩阵A的最大值的函数有3种调用格式,分别是:
1、max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。
2、[Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。
3、max(A,[],dim):dim取1或2。dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。
求最小值的函数是min,其用法和max完全相同。
二、 Matlab中max函数在矩阵中求函数大小的实例如下:
C = max(A)
1、返回一个数组各不同维中的最大元素。
2、如果A是一个向量,max(A)返回A中的最大元素。
3、如果A是一个矩阵,max(A)将A的每一列作为一个向量,返回一行向量包含了每一列的最大元素。
4、如果A是多维数组,max(A)treats the values along the first non-singleton dimension as vectors, returningthe maximum value of each vector.
input那行后面的分号错了,不应该用中文全角的,应该用英文半角的。或者干脆去掉分号。
运行结果如下:
输入一个4*5矩阵[1 2 3 4 5;2 3 4 5 6;1 4 3 3 2;1 3 5 7 3]
a =
1 2 3 4 5
2 3 4 5 6
1 4 3 3 2
1 3 5 7 3
max =
7
maxi =
4
maxj =
4
顺便说一句,matlab有现成库函数,你干嘛非要自己编啊。
a=rand(4,5) % 取随机数,也可以像你那样input手工输入。
[m, ind]=max( a(:) ) % 最大值及其索引,a(:)把矩阵转换成向量
[i,j]=ind2sub(size(a),ind) % 最大值下标
可以利用max函数求出最大值及其所在的位置,具体实现可参考如下代码:
% 函数文件fun.m
function [maxV, row, col] = fun(x)
[maxV1, ~] = max(x, [], 1); % 获取每列的最大值
[maxV2, ~] = max(x, [], 2); % 获取每行的最大值
[maxV, col] = max(maxV1); % 获取x每列最大值的最大值(即x的最大值,max默认获取没列最大值),以及maxV1中最大值所在的位置(x的最大值所在的列数)
[~, row] = max(maxV2); % 获取x每行最大值的最大值(即x的最大值,max默认获取没列最大值),以及maxV2中最大值所在的位置(x的最大值所在的行数)
% 主文件main.m
X = [2 8 4 5 6
7 3 9 3 13
23 3 12 17 11
2 34 7 12 9];
[maxValue, row, col] = fun(X); % 执行后,输出maxValue=34,row=4,col=2
一个5*4的矩阵,有多少个长方形
一个5*4的矩阵,有150个长方形.每一个格子可以说成是一个长方形,算的时候就是求这些边的组合,竖着取两条边,C(6,2)。横着取两条边C(5,2),所以结果为C(6,2)*C(5,2)=15*10=150 。矩阵在消元过程中,使用的把某行乘以某一非零实数、从某行中减去另一行等运算技巧,相当于矩阵的...
用JAVA语言编程.有一个5×4的矩阵,要求编程序求出其中值最大的那个...
import java.util.Random;public class Test2 { public static void main(String[] args){ \/\/ 初始化出一个5X4的矩阵 int[][] a = new int[5][4]; Random r = new Random(); for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++...
在MATLAB环境下创建一个4X5随机矩阵,取第一行和第二行中大于0.3的元素...
a=rand(4,5);b=find(a(1:2,:)>0.3);c=a(b);
求4*5矩阵...c语言详细解说!!谢谢!!
if(c%5==0)\/\/如果一行已经有5个元素了 则控制换行 printf("\\n");printf("%d\\t",a*b); \/\/把a*b的结果当成矩阵中的某个元素 具体坐标由ab决\/\/定 例如 a=2 b=4 代表第二行第四列的元素为8 } putchar('\\n'); \/\/输出完矩阵后换行 getch();\/\/等待用户输入一个字符 ret...
设A是5乘4矩阵,I是单位矩阵,满足AI=A,则I为几阶矩阵?
设A是5乘4矩阵,I是单位矩阵,满足AI=A,则I为4阶矩阵。把行列式中某一行(列)的所有元素都乘以一个数K,等于用数K乘以行列式。如果行列式的某行(列)的各元素是两个元素之和,那么这个行列式等于两个行列式的和。将一个矩阵分解为比较简单的或具有某种特性的若干矩阵的和或乘积,矩阵的分解法...
C语言:输出一个4*5的循环矩阵
按照你的要求编写的C语言4*5的循环矩阵的程序如下 include<stdio.h>int main(){ int a[]={1,2,3,4,5}; int i,j; for(i=0;i<4;i++){ for(j=5-i;j<5;j++){ printf("%d ",a[j]); } for(j=0;j<5-i;j++){ printf("%d ",a[j]); } printf("\\n"...
在MATLAB环境下创建一个4X5随机矩阵,取第一行和第二行中大于0.3的元素...
这个需要需要组成的矩阵行数相等且列数相等,随机的,很麻烦DE的元素个数需要判断,然后才能组成新矩阵 下面有个例子希望能帮到你 a=magic(2)a = 1 3 4 2 >> b=[1,5]b = 1 5 c=[a;b]c = 1 3 4 2 1 5 ...
编程输出4*5矩阵,要求第三行第一个数字去掉,其它保持不变
include<stdio.h> int main(){ int a[4][5],i,j;for(i=0;i<4;i++) \/\/输入4*5的矩阵 for(j=0;j<5;j++)scanf("%d",&a[i][j]);for(i=0;i<4;i++) \/\/输出矩阵 { for(j=0;j<5;j++)if(i==2&&j==0)printf(" ");else printf("%3d",a[i][j])...
从键盘输入4*5矩阵,求矩阵最大元素及其行列位置,然后完成矩阵的转置并输...
printf("输入4行5列数值,用空格隔开\\n");for(i=0;i<4;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);printf("显示矩阵:\\n");for(i=0;i<4;i++){ for(j=0;j<5;j++)printf("%4d",a[i][j]);printf("\\n");} \/\/统计最大值 max=a[0][0];\/\/默认低一个元素 row...
C语言编程:从键盘输入1个4行5列的整数矩阵数据,
1 定义一个4行5列数据 2 双重循环对矩阵每个数值进行遍历,并输入数据。代码:include <stdio.h>int main(){ int a[4][5]; int i,j; for(i=0;i<4;i++) for(j=0;j<5;j++) scanf("%d",&a[4][5]); \/\/使用输入的数据。} ...
石金乙肝: input那行后面的分号错了,不应该用中文全角的,应该用英文半角的.或者干脆去掉分号. 运行结果如下: 输入一个4*5矩阵[1 2 3 4 5;2 3 4 5 6;1 4 3 3 2;1 3 5 7 3] a = 1 2 3 4 5 2 3 4 5 6 1 4 3 3 2 1 3 5 7 3 max = 7 maxi = 4 maxj = 4 顺便说一句,matlab有现成库函数,你干嘛非要自己编啊. a=rand(4,5) % 取随机数,也可以像你那样input手工输入. [m, ind]=max( a(:) ) % 最大值及其索引,a(:)把矩阵转换成向量 [i,j]=ind2sub(size(a),ind) % 最大值下标
辛集市17167403578: 在matlab中建立一个4*5、零矩阵、单位矩阵、元素全为1的矩阵 - ?
石金乙肝:[答案] m0 = zeros(4,5); 零矩阵 m1 = eyes(4,5); 单位矩阵 m2 = ones(4,5); 元素全为1的矩阵
辛集市17167403578: 在MATLAB环境下创建一个4X5随机矩阵,取第一行和第二行中大于0.3的元素组成矩阵.我写的程序是 A=randn(4,5)B=A(1,:)>0.3C=A(2,:)>0.3D=A(1,B)E=A(2,C... - ?
石金乙肝:[答案] 这个需要需要组成的矩阵行数相等且列数相等,随机的,很麻烦DE的元素个数需要判断,然后才能组成新矩阵 下面有个例子希望能帮到你 a=magic(2) a = 1 3 4 2 >> b=[1,5] b = 1 5 c=[a;b] c = 1 3 4 2 1 5
辛集市17167403578: 使用matlab编程:有一个4行5列的矩阵,编程求出其最大值以及最大值所处位置 - ?
石金乙肝: 举个例子,希望有所帮助.代码% 有一个4行5列的矩阵,编程求出其最大值以及最大值所处位置 clc; clear all; A = rand(4, 5); m = A(1); ind = [1 1]; for i = 1 : size(A, 1) for j = 1 : size(A, 2) if m < A(i, j)
辛集市17167403578: 有一个4*5矩阵,从每行中各取一个数(即4个数)求最小值,共5^4=625个最小值,如何用matlab编程序? - ?
石金乙肝: A=input('A=') %输入矩阵A [B,n]=min(A') %B为存放A最小值的向量,n存放最小值所在的位置 sum(B) %对B中向量进行求和
辛集市17167403578: 怎么用MATLAB编这个程序:创建一个4*5随机阵,提取第一行和第二行中大于0.3的元素组成矩形??
石金乙肝: A=rand(4,5) I1=find(A(1,:)>0.3) I2=find(A(2,:)>0.3) B=[A(1,I1),A(2,I2)]
辛集市17167403578: 在MATLAB环境下创建一个4X5随机矩阵,取第一行和第二行中大于0.3的元素组成矩阵.. - ?
石金乙肝: a=rand(4,5); b=find(a(1:2,:)>0.3); c=a(b);
辛集市17167403578: matlab 4*5的矩阵,找出最大的元素 - ?
石金乙肝: clear x0=[89677,99215,109655,120333,135823,159878,182321,209407,246619,300670]; pre_num=10;n=length(x0); disp('级比检验') lambda=x0(1:end-1)./x0(2:end); range=minmax(lambda) x1=cumsum(x0);z=0.5*(x1(2:end)+x1(1:end-1)); ...
辛集市17167403578: 哪位大侠会使用MATLAB进行混合基因式分解?大侠们帮小弟个忙,小弟感激不尽根据以下步骤使用MATLAB编程1:取20点向量并将其连接成一个4*5阶矩阵... - ?
石金乙肝:[答案] function [h,ax,BigAx,patches,pax] = plotmatrix2(varargin) [cax,args,nargs] = axescheck(varargin{:}); error(nargchk(1,3,nargs)); ... else error('MATLAB:plotmatrix:InvalidLineSpec',... 'Invalid marker specification.Type ''help plot''.'); endpatches = []; pax = []; if ...
辛集市17167403578: matlab怎么用for循环定义5个初值为零的矩阵 - ?
石金乙肝: a=zeros(10,10); for i=1:5 b{i}=a; end