主程序
tdata=1980:2009;
ndata=[598.75 620.12 634.65 663.53 728.12 862.73 952.21 1073.84 1304.66 1524.67 1642.75 1947.18 2429.96 3327.04 4255.19 5349.53 5126.22 5649.93 5763.67 6213.24 7022.98 7806.18 8730.00 11708.49 14595.29 16876.78 19631.23 23108.63 25968.38 24888.08 ];
logmal.m函数
function [ Nt ] = logmal( a,tdata )
Nt=a(1).*(1.05^(tdata-1980))/(1+(a(1)/a(3)-1)*exp(-a(2)*(tdata-1980)));
end
错误提示:
Subscript indices must either be real positive integers or logicals.
Error in logmal (line 2)
Nt(i)=a(1).*(1.05^(tdata(i)-1980))/(1+(a(1)/a(3)-1)*exp(-a(2)*(tdata(i)-1980)));
Error in lsqcurvefit (line 195)
initVals.F = feval(funfcn_x_xdata{3},xCurrent,XDATA,varargin{:});
Error in A3 (line 6)
a0=lsqcurvefit(@logmal,a,tdata,ndata);%最小二乘法
Caused by:
Failure in initial user-supplied objective function evaluation. LSQCURVEFIT
cannot continue.
你好
由于看不到你的具体程序,不知道你的a是什么。应该是你的logmal.m函数有问题。Nt的表达式中,应该是向量计算,应该修改采用.*和./。修改如下:
如果还有错误,请把具体程序告诉我。
希望对你有帮助
追问百度限制字数,只能用图了。。抱歉
ndata的值见原题里,或者随便取30个值.
子函数logmal.m也就是上面的。
应该还是目标函数,vectorize函数把全部的*/换成.*和./,就没有报错了。
本回答被提问者和网友采纳matlab中findpeaks函数报错--输入参数太多
在matlab环境下,遇到findpeaks函数报错,提示输入参数过多。错误产生的原因是没有正确使用MathWorks提供的findpeaks函数。在命令行中尝试输入:结果出现错误。findpeaks函数实际上包含在信号处理工具箱内。同时,该函数还可能存在于其他路径中。如果在调用findpeaks函数时,没有正确指定MathWorks的路径,就会导致调用...
matlab,初学者,它为什么老说我“输入参数的数目不足。”
MATLAB出现“输入参数的数目不足”的错误提示是因为你在调用函数或执行某个操作时,提供的参数数量不符合函数或操作的要求。详细解释:1. 函数调用与参数要求不匹配:当你在MATLAB中使用函数时,每个函数都有其特定的参数要求。如果你调用的函数需要两个参数,但只提供了一个,或者提供了过多的...
我使用MATLAB的function函数怎么老提示错误
函数不是这么调用的,调用格式有错误。可以先输入xn,dn,M,mu的值,然后再调用,格式:[yn,W,e2]=LMS(xn,dn,M,mu)
求教,matlab里边使用function一直出错
你的代码没有问题。问题可能出在窗口命令上。>> num(1,2) 这里的括号和逗号为全角,应以半角形式输入字母,数值,符号等。
我用MATLAB的function函数,怎么老是提示错误
可能是因为mean已经在matlab中存在了,你help mean 就可以发现mean是求平均数的,你换个函数名试试吧
matlab中input函数报错
错误在于input后的大括号!修改代码:erasers=4;pads=6;tape=input('enter the number of rolls of tape perchased>');items=erasers+pads+tapecost=erasers*25+pads*52+tape*99average_cost=cost\/items运行结果:
matlab提示错误:此上下文中不允许函数定义.
1、首选,打开编译器,然后在命令行中键入edit打开,如下图所示。2、其次,完成上述步骤后,输入Function以表明该文件是功能文件,如下图所示。3、接着,如果在等号的左侧输入了任何返回值,请使用方括号表示多个返回值,如下图所示。4、然后,等号的右边是函数名称加括号,括号是参数,如下图所示。5、...
用MATLAB照书上代码打后提示:"错误: 此上下文中不允许函数定义."
1、打开编译器,在命令行输入edit打开。2、输入Function代表此文件是函数文件。3、如果有返回值在等号的左边输入,多个返回值用中括号。4、等号右面是函数名加括号,括号内是参数。5、使用%注释,注释的第一行是说明函数的功能。6、传入两个点的坐标,之后计算两点的距离,传给返回值y。7、保存文件,保存的...
Matlab用solve函数,提示错误
solve函数出错时,可以检查代码是否有如下问题:1、是否有调用格式的错误,传入的表达式参数需要统一为字符串,或者统一为符号变量。(matlab在帮助程序中已经删去了对字符串传参的说明,字符串传参很有可能在未来版本被删除,因此推荐使用符号表达式传参数)2、表达式中有错误。①等式中的等号,对于字符串来...
matlab使用ode45函数一直报错,哪位大佬能帮帮忙?
【出错原因及编程错误】1、主程序 1)时间区间设定错误,t=12000值设定偏大,不符合微分方程题意,所以t应取1.2。所以 tspan=[0 1.2]; 而不是tspan=[0 12000];2) for i=[1: (size(y,5))];...end 该循环语句没有作用 2、自定义微分方程函数 1)dTUdt=TMfunc(t,y)定义有误,与...