在MATLAB中输入对数函数主要分为以下两种类型:
一、直接型
以e、2或者是10为底的对数的话,直接输入:y=log(x),y=log2(x),y=log10(x)。例如,a1=log(2.7183);a2=log2(2);a3=log10(10),其结果如下图:
二、转换性
如果需要求的对数函数是 y=log5(25)这种不以e、2、10为底的对数,首先需要根据对数换底公式转换成y=log25/log5来求解。例如,要求解log5(25)、log3(9)、log2(4)这三个对数函数的值,需要写为:a1=log(25)/log(5);a2=log(4)/log(2);a3=log(9)/log(3)。
如何在matlab中用对数函数拟合一组数据?
你可以先用z=log(y)转换一下
matlab 中的对数函数
因为你的矩阵里存在负数
负数的对数(log)会产生复数形式
你可以用sum(A<0)检查一下
如何咋matlab中使用lookfor 命令寻找一个数以十为底的对数函数
lookfor logarithm
紧急,在线等。matlab上的对数函数数据拟合。y=algx+b
x=[500 550 600 650 700 750 800 850 900 950 1000];
y=[62.4 69.2 75.4 82.2 70.4 68.4 75.2 77.8 71.6 75.6 72.2];
f = fittype('a*log10(x)+b'); % 拟合函数的形式
fit1 = fit(x',y',f,'StartPoint',[x(1) y(1)]);
a = fit1.a; % a的值
b = fit1.b; % b的值
fdata = feval(fit1,x'); % 用拟合函数来计算y
figure
plot(x,y); hold on
plot(x,fdata','r'); hold off
legend('Ori data',' Fitting data');更多
能求出a,b值吗?
老大,里面不是有a, b值么,我还做了注释!
哦,知道了。你能尽量多加点注释吗,我是matlab菜鸟。
哦,知道了,你还需要加什么注释么?
以下两句没有注释,看不懂。
fit1 = fit(x',y',f,'StartPoint',[x(1) y(1)]);
legend('Ori data',' Fitting data');
再提问就得扣分了。。。
下面的程序跟你的出图一样,但好像简单些
clc;clear;
x=[500 550 600 650 700 750 800 850 900 950 1000];
y=[62.4 69.2 75.4 82.2 70.4 68.4 75.2 77.8 71.6 75.6 72.2];
plot(x,y);
x_log=log10(x);
A=polyfit(x_log,y,1)
hold on;
plot(x,A(1).*log10(x)+A(2),'r');
fit(x',y',f,'StartPoint',[x(1) y(1)]) 的意思, 是生成一个拟合函数,用的数据是x, y, 注意x'是要将x写成一个n-by-1的向量,y也如此。所以里面是fit(x',y',...). f 是上面定义的拟合函数的形式。'StartPoint'是起始点,定义的起始点x(1),y(1).
legend('Ori data',' Fitting data'); 就是标注两条曲线,第一个是原始曲线,第二个是拟合后的曲线
另一个人用polyfit,这个只能用于多项式拟合。其余的都不行了,我的这个,什么形式的都可以
最后一个问题,为什么要x,y都要转置成列向量?
恩,这个是matlab 自带函数fit所要求的。 fit(x,y,f...)中的x, y必须是要列向量,否则会报错。
如何用MATLAB将一组散点数据拟合成一个对数函数
x=[0.06 0.15 0.24 0.32 0.45 0.55 0.67 0.76 0.85 0.95 1];
y=[0.625 0.455 0.41 0.39 0.26 0.15 0.03 0.01 -0.01 -0.05 -0.06];
ba=[log10(x(:)),ones(size(x(:)))]\y(:); %如果你的lgS是以自然对数为底的话,请用log函数代替log10,下面作图也是一样的.
a=ba(2)
b=ba(1)
plot(x,y,'*',x,a+b*log10(x),'r-')
legend('原始数据','拟合值')
转载请注明出处51数据库 » 通过matlab软件操作对函数性质有进一 MATLAB中如何输入对数函数