用matlab写一段简单的代码~
发布网友
发布时间:2022-04-26 13:22
我来回答
共4个回答
热心网友
时间:2022-04-19 02:47
%minmax.m
function [A,B,C,m,n]=minmax(a,b,c,minmax)
%输入不合法就不验证了
%A,B,C分别返回amax,bx最大值(或最小值),
%与bx同行的c,minmax=1求最小,minmax=2求最大
%m返回amax个数,n返回bmax个数
%同楼上题目确实很难理解,希望写清楚点,回答的人会多点
%用matlab写一段简单的代码~,加注释写了近20分钟,郁闷。
%想写好也不简单吧,看你考虑问题多细致
%%粗糙做三分钟能写好,但是没有通用性,这种代码没有普适性,
%不好意思拿出手
%写的仓促,没有仔细验证通用性,不足之处请指出
if minmax==1
X=[a,b,c];B=[];C=[];A=[];
amin=min(a);
m=find(amin);%amax所在行
for i=1:length(m)%因为可能有多个值取最小amin,处理此意外用
A=[A,amin];
bx=X(m,:);
bxmin=min(bx);
B=[B,bxmin];
n=find(bxmin)
cx=X(n,3);%与bxmin同行的c
C=[C,cx];
end
end
if minmax==2
X=[a,b,c];B=[];C=[];A=[];
amax=max(a);
m=find(amax);%amax所在行
for i=1:length(m)%因为可能有多个值取最大amax,处理此意外用
A=[A,amax];
bx=X(m,:);
bxmax=max(bx);
B=[B,bxmax];
n=find(bxmax)
cx=X(n,3);%与bxmax同行的c
C=[C,cx];
end
end
%%%以下是测试部分%%%
n=5;
a=rand(n,1)
b=rand(n,1)
c=rand(n,1)
d=minmax(a,b,c,2)
%%%%%%结果%%%%%%%%
a =
0.4057
0.9355
0.9169
0.4103
0.8936
b =
0.0579
0.3529
0.8132
0.0099
0.1389
c =
0.2028
0.1987
0.6038
0.2722
0.1988
n =
1
A =
0.9355
B =
0.4057
C =
0.2028
m =
1
n =
1
热心网友
时间:2022-04-19 04:05
看来是初学者了,就给你说个思路哇:
找出amax你应该有记录这些amax的行号了哇?把这个行号单独存为一个矩阵num,根据这些行号,取出对应的bx,然后求出maxbx和对应在bx中的位置nbx,然后你要找的c~就是c(mun(nbx));
eg:
bx=b(num);
[maxbx, nbx]=max(bx);
cc=c(num(nbx));
三句话搞定
热心网友
时间:2022-04-19 05:40
[m,i]=max(a);
bx=b(i);
[n,j]=max(b);
c=b(j);
楼主问题没有讲清楚,我这样理解不知道是不是你的意思。
热心网友
时间:2022-04-19 07:31
不是很懂。纯帮你顶了。