先明确Matlab里的函数绘图也是由点连成,所以这里的函数其实可以看做数组来处理。

以三元函数(对应二维数组)为例:

clc;
f=13000:100:19000;
k=0:0.01:1;
[f,k]=meshgrid(f,k);
Us=10;
Rs=0.1;
Ls=10^(-4);
Cs=10^(-6);
Rd=0.1;
Ld=10^(-4);
Cd=10^(-6);
Rw=10;
M=sqrt(Ls.*Ld).*k;
w=2.*pi.*f;
I1=Us./(Rs+w.*Ls.*j+1./(w.*Cs.*j)+(w.*w.*M.*M)./(Rd+Rw+w.*Ld.*j+1./(w.*Cd.*j)));
I2=j.*w.*M.*Us./(Rs+j.*w.*Ls+1./(j.*w.*Cs))./(Rd+Rw+j.*w.*Ls+w.*w.*M.*M./(Rd+Rw+j.*w.*Ls));
I1real=real(I1);
I2real=real(I2);
P=I1real.*Us;
Pw=I2real.*I2real.*Rw;
%surf(f,k,I1),hold on
%surf(f,k,I2real);
I2abs=abs(I2);
I2absmax=max(I2abs);
I2max=max(I2absmax);
[kn,fn]=find(I2abs==I2max);
disp(I2max);
disp(fn);
disp(13000+(fn-1).*100);
disp(kn);
disp(0+(kn-1).*0.01);
disp(I2abs)

  使用max()函数找出最大值,再用find()函数查找与最大值对应的元素的行列坐标。

  find()函数使用说明如下:

  [kn,fn]=find(I2abs==I2max)

kn,fn为当I2abs=I2max时对应的元素行列坐标。

再根据得到的行列坐标倒推两个自变量的值:

f=13000+(fn-1).*100

k=0+(kn-1).*0.01
//由变量起始值和间隔值倒推

在上例中,I2abs最大值为61.6064,对应的行列坐标为101和30,两变量的间隔值分别为100和0.01,倒推得函数最大值时量变量值为f=15900,k=1。

 posted on 2017-05-03 16:22  三球法术  阅读(5171)  评论(0编辑  收藏  举报