本文编写的matlab程序,需要使用者按照文档提示在excel表格中填入相关数据,运行之后即会生成图像
方法:最小二乘法进行一次多项式拟合
提示:
Vi:滑块通过光电门2的速度
ti:滑块由P0到Pi所用的时间
Si:P0-P1
解读
1.读取表格中的数据,并且命名变量
data = xlsread('经典动力学.xlsx');
2.将输入的数据转化为国际单位
x_1=data(:,2)*0.001;
y_1=data(:,1)*0.01;
3.得出一次多项式向量的斜率与截距
p_1 = polyfit(x_1,y_1,1); %求得1次多项式系数向量p_1
k = p_1(1,1); % 斜率
V0 = p_1(1,2); % 截距
4.图例中的信息会随着数据而发生改变
str=char(['拟合函数:','y=',num2str(k),'x+',num2str(V0)]);
legend('数据点',str);
5.给第一幅图命名
fg1 = figure('numbertitle','off','name','v-t图');
程序如下
%文件介绍:通过最小二乘法对已知数据向量x、y进行拟合,理论曲线:一次多项式,绘制坐标图
%文件使用方法:
%新建表格,第一列输入Vi,第二列输入ti,第三列为Si,将表格重命名为‘经典动力学’
%打开matlab,运行本文件
% 注意:输出结果单位为国际单位
data = xlsread('经典动力学.xlsx');
x_1=data(:,2)*0.001;
y_1=data(:,1)*0.01;
p_1 = polyfit(x_1,y_1,1); %求得1次多项式系数向量p_1
k = p_1(1,1); % 斜率
V0 = p_1(1,2); % 截距
xf_1=0:0.01:2;
yf_1=polyval(p_1,xf_1);
fg1 = figure('numbertitle','off','name','v-t图');
plot(x_1,y_1,'b+',xf_1,yf_1,'b-','Linewidth',4, 'MarkerSize', 16)
xlabel('滑块由P0到Pi所用的时间 单位:s');
ylabel('滑块通过光电门2的速度Vi 单位:m/s');
title('V-t图像');
txt = ['\leftarrow','截距为',num2str(V0)];
text(0,V0,txt)
grid on;
str=char(['拟合函数:','y=',num2str(k),'x+',num2str(V0)]);
legend('数据点',str);
data_s_t = (data(:,3)*0.01)./(data(:,2)*0.001);
data_t=data(:,2)*0.001;
x_2=data_t;
y_2=data_s_t;
p_2 = polyfit(x_2,y_2,1);
k_2 = p_2(1,1); % 斜率
V0_2 = p_2(1,2); % 截距
yf_2=polyval(p_2,xf_1);
fg2 = figure('numbertitle','off','name','s/t-t图');
plot(x_2,y_2,'r+',xf_1,yf_2,'r-','Linewidth',4, 'MarkerSize', 16)
xlabel('(Pi-P0)/滑块由P0到Pi所用的时间 单位:m/s');
ylabel('滑块由P0到Pi所用的时间 单位:s');
title('s/t-t图像');
txt = ['\leftarrow','截距为',num2str(V0_2)];
text(0,V0_2,txt)
grid on;
str=char(['拟合函数:','y=',num2str(k_2),'x+',num2str(V0_2)]);
legend('数据点',str);
注意:需要在m文件中运行本程序,即新建脚本并运行,若弹出更改文件夹和添加到路径选项,选择两者均可