matlab 批量拟合,使用matlab读取批量txt文件,并进行最小二乘法拟合处理

这段MATLAB代码用于读取一系列'ms.txt'文件,计算每段数据的平均值,并进行线性拟合。数据点按10ms、100ms、200ms等间隔选取,最后绘制原始数据点和拟合曲线,用于分析不同积分时间下的暗噪声。
摘要由CSDN通过智能技术生成

针对学校的项目简单写了点程序,记录一下。

clear;

for n=10:10:100                              //由于TXT文件名非线性连续,需要多个循环

m=[num2str(n),'ms.txt'];              //文件名为共同点为‘ms.txt’

A=importdata(m);                       //读TXT

B=A.data(:,2);

aver(n/10,:)=sum(B)/2068;

xl(n/10,:)=n;

end

for n=200:100:1000

m=[num2str(n),'ms.txt'];

A=importdata(m);

B=A.data(:,2);

aver(n/100+9,:)=sum(B)/2068;

xl(n/100+9,:)=n;

end

for n=1200:200:3200

m=[num2str(n),'ms.txt'];

A=importdata(m);

B=A.data(:,2);

aver(n/200+14,:)=sum(B)/2068;

xl(n/200+14,:)=n;

end

for n=3600:200:5000

m=[num2str(n),'ms.txt'];

A=importdata(m);

B=A.data(:,2);

aver(n/200+13,:)=sum(B)/2068;

xl(n/200+13,:)=n;

end

for n=5250:250:10000

m=[num2str(n),'ms.txt'];

A=importdata(m);

B=A.data(:,2);

aver(n/250+18,:)=sum(B)/2068;

xl(n/250+18,:)=n;

end

for n=10500:500:60000

m=[num2str(n),'ms.txt'];

A=importdata(m);

B=A.data(:,2);

aver(n/500+38,:)=sum(B)/2068;

xl(n/500+38,:)=n;

end

x=xl;

y=aver;

plot(x,y,'k.','markersize',10);          //离散图

hold on

P3=polyfit(x,y,1);                           //最小二乘法拟合一项式

t=0:1:70000;

S3=polyval(P3,t);                           //出 k 、b

plot(t,S3,'r');                                   //画拟合直线

grid on

xlabel('Integration time/ms','FontSize',12);

ylabel('Dark noise','FontSize',12);

legend('Raw data','Fitting curve')

P3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值