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。应该怎么写呢?

 Réponse acceptée

raray
raray le 24 Nov 2022

0 votes

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

Plus de réponses (0)

Catégories

En savoir plus sur 数学 dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!