MATLAB寻找二维矩阵里的最小值。

代码如下
cd=0.625;
ps=70e5;
kk=2e-12;
d=870;
xs=0.000001;
op1=(0.0000045+xs); %valve open area
op2=(0.0000045-xs);
if op1<0 % simulate the actual valve open area
Av1=0;
else
Av1=7.938e-3*pi*op1;
end
if op2<0;
Av2=0;
else
Av2=7.938e-3*pi*op2;
end
r=11.43/5.8;
p1fnc=@(p1)(cd*(2/d)^0.5*(Av1*(ps-p1)^0.5-Av2*(p1)^0.5)+kk*(p1-p1*r)*(r-1)-r*cd*(2/d)^0.5*(Av1*(p1*r)^0.5-Av2*(ps-r*p1)^0.5));
if xs>=0
p10=1e6;
else
p10=2e6;
end
[p1a,val] = fzero(p1fnc,p10);
p2a=p1a*r;
[p1n,p2n]=meshgrid((p1a):1e3:2e6,1e6:1e3:(p2a));
P12UP=((cd*(2/d)^0.5*(Av1*(ps-p1n).^0.5-Av2*(p1n).^0.5)+kk*(p1n-p2n)*(r-1)-r*cd*(2/d)^0.5*(Av1*(p2n).^0.5-Av2*(ps-p2n).^0.5)));
y=find(P12UP?????????);
p1n和p2n是自己设定的范围。但是用min(P12UP)的命令得到的不是最小值,而是一系列数字。应该怎么用才可以呢?最小值P12UP手动找到的话是5.1855e-10。应该怎么写呢?

 Risposta accettata

raray
raray il 24 Nov 2022

0 voti

“min(P12UP)的命令得到的不是最小值,而是一系列数字”
因为你的 P12UP 是一个矩阵,min 函数默认只针对矩阵没一列求最小值,故返回的是一个行向量。如果你要找到矩阵里所有元素的最小值,可以用:
min(P12UP(:))

Più risposte (0)

Tag

Richiesto:

il 24 Nov 2022

Risposto:

il 24 Nov 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!