先明確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。