Matlab 函數最大值點變量值確定方法


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM