matlab怎么定义常量?
发布网友
发布时间:2022-05-05 10:14
我来回答
共4个回答
热心网友
时间:2022-06-27 08:36
用nlinfit(x,y,@fun,beta)
只能让函数有两个输入fun(beta,x)
其中beta是参数,x是自变量
如果fun有多于两个的变量,第三个变量就不能通过调用nlinfit传递给fun
结果报错你的inline
function输入参数数量不足。
而z也不能作为beta(3)传进去,因为拟合过程会改变他的值,最纵不能起到固定常数的作用
不过我们还是有办法的,把需要的额外不参与拟合的参数通过x传给fun
因为nlinfit不理x和y具体有多少个值,只要把x传递给fun,能够得到长度和y相同的数列就可以
所以,你要实现的功能可以通过以下程序实现
x=[1,2,3,4,5];
y=[7,16,31,0,79];
z=2;
x=[x
z];
myfunc=inline('beta(2)+beta(1).*x(1:end-1).*x(end)','beta','x');
beta=nlinfit(x,y,myfunc,[10,0.1]);
a=beta(1);b=beta(2);
将z塞到x*后面,从x传递给myfunc,x变为[1,2,3,4,5,2];
但是要注意在函数内部x的最后一个元素作为z,前面的5个元素参与运算
那样myfunc的计算结果仍然是和y序列等长的5个数
顺便讲句,其实可以通过这样的办法实验二维曲面的拟合
设现有三组等长列向量对应二维曲面的x,y,z坐标
x=[x1
x2
......
xn]';
y=[y1
y2
......
yn]';
z=[z1
z2
......
zn]';
要拟合为曲线方程z=f(beta,x,y),其中beta是参数,x,y是两个输入
以二维旋转对称高斯曲面为例子z=A*exp((x^2+y^2)/B^2)+C
可以这样操作
X=[x
y];
Y=z;
f=inline('beta(1)+exp((X(:,1).^2+X(:,2).^2)./beta(2)^2)+beta(3)','beta','X');
beta=nlinfit(X,Y,f,beta0);
%参数的初始值beta0
A=beta(1);B=beta(2);C=beta(3);
热心网友
时间:2022-06-27 08:36
还是使用global,比如说想添加一个PII, 值为3.566.
方法1:修改系统文件matlabrc.m(命名时注意不要造成混乱)。
找到你的安装目录下的启动文件matlabrc.m,例如:
C:\matlab\toolbox\local\matlabrc.m
打开,并且在最后一行添加:
global PII;
PII = 3.566;
重启Matlab,输入
>> PII
得到:
PII =
3.5660
但是其实这个PII还是可以改变的,所以另外还有一种复杂点的方法。
方法2:
下载参考资料的链接中的文件,把define那部分文件内容添加到matlabrc.m中;如果需要设定PII = 3.566,再添加如下代码:
global PII;
define PII 3.566;
方法3: '有空飘过的'已经给出了。
参考资料:http://www.mathworks.com/matlabcentral/fileexchange/13622-defineundefine-constants
热心网友
时间:2022-06-27 08:37
使用global,比如说想添加一个PII, 值为3.566.
方法1:修改系统文件matlabrc.m(命名时注意不要造成混乱)。
找到你的安装目录下的启动文件matlabrc.m,例如:
C:\matlab\toolbox\local\matlabrc.m
打开,并且在最后一行添加:
global PII;
PII = 3.566;
重启Matlab,输入
>> PII
得到:
PII =
3.5660
但是其实这个PII还是可以改变的,所以另外还有一种复杂点的方法。
方法2:
下载参考资料的链接中的文件,把define那部分文件内容添加到matlabrc.m中;如果需要设定PII = 3.566,再添加如下代码:
global PII;
define PII 3.566;
方法3: '有空飘过的'已经给出了。
热心网友
时间:2022-06-27 08:38
其实我有一个办法,不算好,但是简单
要一个叫constA的常量
在里的matlab的path里加一个目录,譬如D:\matlab\constants
在这个目录里创建constA.m
内容如下
function val = constA
val = 100; %常量的值
另外一种方法,创建const.m,放在你的path的目录里
内容
function val = const(constName)
switch constName
case 'CONSTA'
val = 100;
case 'CONSTB'
val = 200;
otherwise
error('未知常量名');
end
调用方法const('CONSTA')*const('CONSTB')