matlab自定义函数拟合写法,Matlab 自定义函数拟合

本文通过MATLAB代码展示了如何进行数据的曲线拟合,包括多项式拟合及非线性拟合的方法,并对比了两种拟合方式的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

%RandomAccess J0237_2 reference

%BasketballPass,BQSqare, BlowingBubbles,RaceHorses,

close all;

clear all;

RD = [

1507.09 40.64

755.76  36.89

376.83  33.56

196.96  30.77

1610.73  37.97

631.13  34.63

284.29  31.81

141.13  29.12

1634.23  38.18

749.48  34.79

353.55  31.62

166.08  28.72

1193.66  39.44

587.38  35.73

288.11  32.34

144.13  29.56

];

RD_s(1,1:4,1:2) = RD(1:4,:);

RD_s(2,1:4,1:2) = RD(5:8,:);

RD_s(3,1:4,1:2) = RD(9:12,:);

RD_s(4,1:4,1:2) = RD(13:16,:);

n = 4;

sample_number = 4;

colorset = {{'rx','r-','r--'},{'bo','b-','b--'},{'gd','g-','g--'},{'m+','m-','m--'}};

for seq_id = 1:1:n

x = RD_s(seq_id,:,1); %rate

y = RD_s(seq_id,:,2); %distortion

%method 1

fx = inline('a(1)*(x.^2) + a(2)*sqrt(x) + a(3)','a','x');

a = nlinfit(x,y,fx,[1 1 1]);

x1 = min(x):20:max(x);

y1 = a(1)*(x1.^2) + a(2)*sqrt(x1) + a(3);

%method 2

fx2 = polyfit(x,y,2);

yvalue = polyval(fx2,x);

x2 = x1;

y2 = polyval(fx2,x2);

%y2 = fx(1)*x1.^2 + fx(2)*x1 + fx(3); %polyval(fx,x1);

plot(x,y,colorset{1,seq_id}{1,1},x1,y1,colorset{1,seq_id}{1,2});

hold on

plot(x2,y2,colorset{1,seq_id}{1,3});

grid on;

end

% for seq_id = 1:1:n %     x = RD_s(seq_id,:,1); %rate %     y = RD_s(seq_id,:,2); %distortion %     fx = polyfit(x,y,2); %     yvalue = polyval(fx,x); %     x1 = 0:20:max(x); %     y1 = polyval(fx,x1); %     %y2 = fx(1)*x1.^2 + fx(2)*x1 + fx(3); %polyval(fx,x1); %     plot(x,y,colorset{1,seq_id}{1,1},x1,y1,colorset{1,seq_id}{1,2}); %     hold on %     grid on; % end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值