matlab曲线拟合(polyfit函数,读取文件,分隔文件内容的各列,结果写出到文件)

源数据文件:各行以tab键分隔,文件中的第一列为自变量,其他列为因变量。

x	           y1               y2                y3
-5.00E+03	-2.73E-01	-8.24E-01	5.63E+00
-4.90E+03	-2.78E-01	-8.19E-01	5.63E+00
-4.80E+03	-2.83E-01	-8.14E-01	5.63E+00
-4.70E+03	-2.88E-01	-8.09E-01	5.62E+00
-4.60E+03	-2.94E-01	-8.03E-01	5.62E+00
-4.50E+03	-2.99E-01	-7.98E-01	5.61E+00
-4.40E+03	-3.04E-01	-7.93E-01	5.61E+00
-4.30E+03	-3.09E-01	-7.88E-01	5.60E+00
-4.20E+03	-3.15E-01	-7.83E-01	5.60E+00
-4.10E+03	-3.20E-01	-7.77E-01	5.60E+00
-4.00E+03	-3.25E-01	-7.72E-01	5.59E+00
-3.90E+03	-3.31E-01	-7.67E-01	5.59E+00
-3.80E+03	-3.36E-01	-7.62E-01	5.58E+00
-3.70E+03	-3.41E-01	-7.56E-01	5.58E+00
-3.60E+03	-3.47E-01	-7.51E-01	5.57E+00
-3.50E+03	-3.53E-01	-7.46E-01	5.57E+00
-3.40E+03	-3.58E-01	-7.40E-01	5.56E+00

Matlab代码

clear
clc

fid = fopen('D:/xxx/result.txt','w');%this command will clear the file. the file will be created , if not exited.

format long %pirnt 15 fig
delimiter = '\t';
nheaderlines =1; %文件中的第一行为表头
A = importdata("D:/xxx/xxx.tab", delimiter, nheaderlines);
%A = importdata("D:/materials/WorkingProjMaterial/fromJiading/adamsKC/rear/rear_suspension_longitudinal_traction.tab", delimiter, nheaderlines);

rowsNum = size(A.data,1)%row of A
columnsNum = size(A.data,2)%columns of A
size(A.colheaders);

IndepenVariIdx = 1 %文件中的第一列为自变量,其他列为因变量
x = A.data(:,IndepenVariIdx);%first column of A.data
display("indepent varialbe name = ");
display(A.colheaders(1));

indepVarNameCell = A.colheaders(IndepenVariIdx);
fprintf(fid,'indepent varialbe name = %s  \n \n', indepVarNameCell{1,1});
curveHighestOrder = 3;%使用三次曲线进行拟合
for colunmIdx = 2: 1:columnsNum %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    y = A.data(:,colunmIdx);%one column of A.data
    %display("curve:  ")
    %display(A.colheaders(colunmIdx))
    name = A.colheaders(colunmIdx);
    fprintf(fid,'curve of %s :\n', name{1,1});
    coeffi = polyfit(x,y,curveHighestOrder); %coeffi(1) is highest order term
    colNum = size(coeffi,2);
    for i = colNum:-1:1
        fprintf(fid,'%.9f,', coeffi(i));  %将结果写入文件中
    end
    fprintf(fid,'\n \n');
end

fclose(fid);%关闭文件
display("END");

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

First Snowflakes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值