matlab中对一个数组求最大的几个数我需要处理一个1*10000的矩阵,首先按照每m个数一个周期,求每个周期中最大的数,这样就有10000/m个数.再在这些数中求最大的那n个.这里肯定是可以整除.最后,

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/30 08:56:13

matlab中对一个数组求最大的几个数我需要处理一个1*10000的矩阵,首先按照每m个数一个周期,求每个周期中最大的数,这样就有10000/m个数.再在这些数中求最大的那n个.这里肯定是可以整除.最后,
matlab中对一个数组求最大的几个数
我需要处理一个1*10000的矩阵,首先按照每m个数一个周期,求每个周期中最大的数,这样就有10000/m个数.再在这些数中求最大的那n个.这里肯定是可以整除.最后,要返回的值是这n个数的值和他们在原来那个1*10000的矩阵中的位置,并且按照在原矩阵中的先后顺序排好.
我举例如下.a=[3,15,6,21,18,2,18,19,1,4,7,29,21,23,29,23,14,6,9,29,31,],对这个数组,每3个数是一个周期,这就是7个周期,会求出7个数.依次是[15,21,19,29,29,23,31]然后在这7个数中取最大的四个数,那应该是[29,29,23,31].然后返回这四个数和他们在原矩阵中的位置.
记为:a1=29,n1=12;a2=29,n2=15;a3=23,n3=16;a4=31,n4=21.也可以返回成矩阵的形式[29,29,23,31;12,15,16,21].
Sort in ascending order.For vectors,SORT(X) sorts the elements of X in ascending order.For matrices,SORT(X) sorts each column of X in ascending order.For N-D arrays,SORT(X) sorts the along the first non-singleton dimension of X.When X is a cell array of strings,SORT(X) sorts the strings in ASCII dictionary order.SORT(X,DIM) sorts along the dimension DIM.[Y,I] = SORT(X) also returns an index matrix I.If X is a vector,then Y = X(I).If X is an m-by-n matrix,then for j = 1:n,Y(:,j) = X(I(:,j),j); end When X is complex,the elements are sorted by ABS(X).Complex matches are further sorted by ANGLE(X).When more than one element has the same value,the order of the elements are preserved in the sorted result and the indexes of equal elements will be ascending in any index matrix.Example:If X = [3,7,5; 0,4,2] then sort(X,1) is [0,4,2;3,7,5] and sort(X,2) is [3,5,7;0,2,4];See also SORTROWS,MIN,MAX,MEAN,MEDIAN.Overloaded methods help cell/sort.m;xregdesign/sort.m;sweepset/sort.m

matlab中对一个数组求最大的几个数我需要处理一个1*10000的矩阵,首先按照每m个数一个周期,求每个周期中最大的数,这样就有10000/m个数.再在这些数中求最大的那n个.这里肯定是可以整除.最后,
改好了.和我想的一样,是升序.
%下面是你要输入的数据
a=[3,15,6,21,18,2,18,19,1,4,7,29 21 23 29 23 14 6 9 29 31]%原矩阵
m=3%周期
n=4%你要取的前n个数
%下面一个字也不用改
b=reshape(a,m,[]);
[c i]=max(b);
[d,j]=sort(c);
j=sort(j(end:-1:end-n+1));
k=m*(j-1)+i(j);
c=[a(k);k]%答案

如果不用库函数的话,可以用下面的代码:
clc;
clear;
a=[3,15,6,21,18,2,18,19,1,4,7,29,21,23,29,23,14,6,9,29,31];
m=3;
n=4;
%以后不需要改动
j=0;
jlast=0;
for i=1:length(a)
if mod(i,m)==...

全部展开

如果不用库函数的话,可以用下面的代码:
clc;
clear;
a=[3,15,6,21,18,2,18,19,1,4,7,29,21,23,29,23,14,6,9,29,31];
m=3;
n=4;
%以后不需要改动
j=0;
jlast=0;
for i=1:length(a)
if mod(i,m)==1
j=j+1;
end
if j-jlast==1
b(j,:)=[a(i),i];
else
if b(j,1) b(j,1)=a(i);
b(j,2)=i;
end
end
jlast=j;
end
c=b(1:n,:);
for i=n+1:size(b,1)
minc=c(1,:);
pc=1;
for j=2:n
if c(j,1) minc=c(j,:);
pc=j;
end
end
if b(i,1)>minc(1)
if pc==1;
c=[c(2:n,:);b(i,:)];
elseif pc==n
c=[c(1:n-1,:);b(i,:)];
else
c=[c(1:pc-1,:);c(pc+1:n,:);b(i,:)];
end
end
end
b',c'

收起

matlab中对一个数组求最大的几个数我需要处理一个1*10000的矩阵,首先按照每m个数一个周期,求每个周期中最大的数,这样就有10000/m个数.再在这些数中求最大的那n个.这里肯定是可以整除.最后, Matlab中怎么返回一个数组中元素的个数 matlab数组中求最大的几个数并返回其位置现有一个1*10000的矩阵,要求其最大的前n个数.并且返回其在矩阵中的位置.举例如下.a=[3,15,6,21,18,2,18,19,1,4,7,29,21 ,23 ,29 ,23,14,6,9 ,29 ,31],求其最大的前4个 在matlab 中如何判断一个数是否属于一个数组我在编一个程序,要求数组中每一个元素的值都不相同 matlab 编写一个m函数文件,求一数组中的元素,使得该元素的绝对值在该数组所有元素的绝对值中是最大的. 数组元素插入如何在一个排好的数组中插入几个数使之成为另一个数组输出 matlab 求数组个数的函数求数组的元素的个数 matlab多个长度为3的数组,个数不确定,怎么从每一个数组中取一个数字,得到全排列假如有3个数组,分别为a b c.其全排列用matlab可以计算出,方法为[a b c]=ndgrid(a,b,c)[a(:) b(:) c(:)]我的数组个数是不 怎么用matlab求实际元素的个数?怎么求数组中实际元素的个数?a=1,[],[],[],[],[]比如这个数组,我想得到1,而不是6 我在matlab里遇到一个数组求均值的问题有一个数量比较大的数组从第一个数开始 每256个数求均值然后257到512个数求均值,直到最后将得到的结果存成一个数组还有个问题就是到最后一个部分 用matlab求一数组的最大值用matlab程序设计一个数组求他的最大值数组具有普遍性 在matlab中,如何将一个一维数组分成两个一维数组在matlab中,如何将一个一维数组X(3000个数)分成两个一维数组A和B.要求第1~100个数属于A,第101~200个数属于B,201~300属于A,301~400属于B,以此类推.我 matlab求相同元素个数现在有一个有100,多个数据的数组,然后比如有10个1和20个2,现在我要分别求出1的个数和2的个数,怎么实现? matlab中cat获取高维数组,怎样循环表示每一个数组的行列 matlab中,要对一个数组全部赋值为2,3这样的数应该用什么样的语句啊? matlab中如何生成元素未知但元素个数已知的一维数组 matlab随机排列组合希望写出一个这样的程序:在数组【1,2,3】中随机抽取两个数数组【4,5,6】中随机抽取两个数数组【7,8,9】中随机抽取两个数再将上面抽出的6个数的可能组合都列出想用MATLAB matlab中向量的连续非零数组的个数怎么求?matlab里的向量a=[0 0 0 1 2 3 0 0 4 5 0 0 6 0 0],我想得出这个向量a中有3个连续非零数组(即[1 2 3]、[4 5]、[6]).我只需要知道有几个这种连续非零数组就行.