急.有可用matlab代码的额外给100分

问题描述:

急.有可用matlab代码的额外给100分
本实验在上次生成的矩阵A的基础上进行,首先产生另外一个大小完全相同(9*10)的0矩阵B,然后对A进行如下判断,并对B赋值。
求取矩阵A的最大值,不妨设A(i1,j1)为矩阵的最大值,则将矩阵B的B(i1,j1)赋值为1;(不允许用max函数)
求取矩阵A中除(i1,j1)以外的其它位置的最大值,不妨设最大值为A(i2,j2),则将矩阵B中的B(i2,j2)赋值为2;
求取矩阵A中除(i1,j1)、(i2,j2)以外的其它位置的最大值,不妨设最大值为A(i2,j2),则将矩阵B中的B(i2,j2)赋值为2;
……………
循环如此继续,直到B中的所有元素均非0,循环终止。
注意:因为矩阵A中学号必然会出现重复,故一定会有某次求得的最大值不只一个,请思考这样的问题该怎样解决。
示例如下:
A
50 60 70
60 90 40
40 20 80
B
5 4 3
4 1 6
6 7 2
我的学号是20103532
还有一道同分题目在
1个回答 分类:数学 2014-10-23

问题解答:

我来补答
%xunzhi By XYD
clc;
a=[10 8 6 4;...
2 5 8 9;...
6 0 9 9;...
5 8 7 4;...
9 4 2 9];
[r,c]=size(a);num=r*c;
%先将矩阵转化为一维数组,并降序排列;
DanHang=reshape(a,1,num);
PaiXu_1=sort(DanHang,'descend');
%寻找最简数组,即数组中每个数值不重复
%如[1 2 3 3 5] --> [1 2 3 5]
for i=num:-1:2
if PaiXu_1(i)==PaiXu_1(i-1)
PaiXu_1(i)=PaiXu_1(num);
end
end
PaiXu_2=sort(PaiXu_1,'descend');
t=find(PaiXu_2==PaiXu_1(num));
ShuZhi=PaiXu_2(1:t(1));
%输出目标矩阵
%通过find函数确定单索引,然后再转化为双索引
Out=zeros(r,c);
w=0;
for j=1:length(ShuZhi)
w=w+1;
XiaBiao=find(a==ShuZhi(j));%单索引 矩阵
flag=size(XiaBiao);
if flag==1
v=ceil(XiaBiao/r);
u=XiaBiao-(v-1)*r;
Out(u,v)=w;
else
%某一个数有多个的情况,都赋同一值w
for k=1:flag
v=ceil(XiaBiao(k)/r);
u=XiaBiao(k)-(v-1)*r;
Out(u,v)=w;
end
end
end
a
Out
 
 
展开全文阅读
剩余:2000
上一页:合外力做功,