matlab function定义函数,并且用fsolve求解这个函数。代码如下:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab function定义函数,并且用fsolve求解这个函数。代码如下:相关的知识,希望对你有一定的参考价值。

function F=myfun(U)
a1=4.15;
a2=62.5;
n1=1.4681;
n2=1.4628;
lambda=1.55;
V=2*pi/lambda*a1*sqrt(n1^2-n2^2)
W=sqrt(V^2-U^2);
J=(-besselj(1,U)/U+besselj(0,U))/(U*bessel(1,U));
K=-besselk(0,W)-besselk(1,W)/W;
f1=J;
f2=(1+n2^2/n1^2)*K;
f3=(1+n2^2/n1^2)*K^2;
f4=4*n2^2/n1^2*K^2;
f5=4*(1/U^2+1/W^2)*(1/U^2+n2^2/n1^2*1/W^2);
F=f1-1/2*(-f2-(f3-f4+f5)^2)
U = fsolve(@(U) myfun(U),[0,2.0966923092])

%[0,2.0966923092]为U的取值范围,是这样调用fsolve和function函数吗???第一次用matlab,请高手解答。若方便,请将更改后的代码发至邮箱569409606@qq.com

采用fzero函数(求非线性方程)而不是fsolve函数(它是求非线性方程组的)
x = fzero(fun,x0)
fun为待求函数,x0为初始值
没细看你的程方程
命令行输入:
U = fzero(@myfun,2)

PS:我觉得你可以采用二分法来求解。追问

已经解决,多谢

参考技术A 不是

MATLAB画信号频谱的子函数

输入信号序列和采样率,该子函数可以画出该信号的频谱图。

function [f,spec,NFFT]=spec_fft_plot(sample,L,Fs)
% 输入数据说明:
% sample:信号序列;
% L:信号序列的长度;
% Fs:该信号的采样频率。
% 输出数据说明:
% f:频率;
% spec:频谱图纵坐标;
NFFT = 2^nextpow2(L); 
% NFFT = L;
spec=abs(fft(sample,NFFT)./L);
flag = 1;
if flag ==1
    f = Fs/2*linspace(0,1,NFFT/2+1);
    spec=spec(1:length(f));
else
    f = Fs/2*linspace(-1,1,NFFT);
    spec = fftshift(spec);
end

  

以上是关于matlab function定义函数,并且用fsolve求解这个函数。代码如下:的主要内容,如果未能解决你的问题,请参考以下文章

百度matlab有啥函数可以自己命名后保存wav音频文件?注意!!!

请问MATLAB中有tf2fs这个函数吗?

matlab中function函数怎么用,为啥出错

matlab怎么用函数?

如何用matlab 绘制出如图三角调幅信号的频谱图(转化为数字序列,用FFT求)

function定义函数运行时总是出错,怎么修改代码?