![]() |
[求助]关于参数推断(最优问题)
小弟初学Matlab, 想求下面问题最优,
function f = eushibor(x) r=readshibor; n=numel(r); y=zeros(n,1); T = 250; h = 1/T; i = 1:n-1; y(i) = (-1/( 2*log(2*pi*r(i)*h*x(3)^2) ) - (r(i+1)-r(i)-x(1)*(x(2)-r(i))*h)^2/(2*x(3)^2*r(i)*h)); f = -sum(y); function r=readshibor r = xlsread('Shibor'); 由于对Matlab的一些规则还不是很晓得, 请帮忙指出问题和修改方法,多谢多谢!! |
回复: [求助]关于参数推断(最优问题)
运行时总显示 Matrix must be square.
|
回复: [求助]关于参数推断(最优问题)
function f = eushibor(x)
r=readshibor; n=numel(r); y=zeros(n,1); T = 250; h = 1/T; i = 1:n-1; y(i) = (-1/( 2*log(2*pi*r(i)*h*x(3)^2) ) - (r(i+1)-r(i)-x(1)*(x(2)-r(i))*h)^2/(2*x(3)^2*r(i)*h)); f = -sum(y); function r=readshibor r = xlsread('Shibor'); 上面是你的程序 我帮你修改一下成这样的 function f = eushibor(x) r = xlsread('Shibor'); r=readshibor; n=numel(r); y=zeros(n,1); T = 250; h = 1/T; i = 1:n-1; y(i) = (-1/( 2*log(2*pi*r(i)*h*x(3)^2) ) - (r(i+1)-r(i)-x(1)*(x(2)-r(i))*h)^2/(2*x(3)^2*r(i)*h)); f = -sum(y); 一般来说,函数调用是要传递和返回参数的。你是想通过readshibor函数来打开一个excel文件,然后将其传回给eushibor函数中的r。但其实没必要这么麻烦。当然,如果你真想这么做应该是这样的 ------------------------------------eushibor.m------------------------------------------------------------------------ function f = eushibor(x) r=readshibor(); n=numel(r); y=zeros(n,1); T = 250; h = 1/T; i = 1:n-1; y(i) = (-1/( 2*log(2*pi*r(i)*h*x(3)^2) ) - (r(i+1)-r(i)-x(1)*(x(2)-r(i))*h)^2/(2*x(3)^2*r(i)*h)); f = -sum(y); -----------------------------------------readshibor.m---------------------------------------------------------- function f1=readshibor() f1=xlsread(‘Shibor’); --------------------------------------------main.m------------------------------------------------------------- x=5; y=eushibor(x); --------------------------------------------------------------------------------------------------------------------- :confused: :ft: :cool: |
所有时间均为北京时间。现在的时间是 12:22。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.