matlab_常用绘图方法_离散数据拟合曲线

1.画图
在这里插入图片描述
示例代码:

clc;clear all;
x=-20:0.01:20;
y=x.^3+2*x.^2-3*x+4;

x1=0:0.01:2*pi;
y1=cos(2.*x1);

t=0:0.01:2*pi;
x3=(1+sin(t)-2.*cos(4.*t)).*cos(t);
y3=(1+sin(t)-2.*cos(4.*t)).*sin(t);

x2=-20:0.01:20;
y2=sin(x)+sin(2*x);

figure('position',[80,80,700,700])
subplot(2,2,1);
plot(x,y,'b');
xlabel('x');
ylabel('y');
title('图一');
legend('y=x.^3+2*x.^2-3*x+4');
grid on;

subplot(2,2,2);
polar(x1,y1,'b');
xlabel('x1');
ylabel('y1');
title('图二');
legend('y1=cos(2*x)');
grid on;

subplot(2,2,3);
plot(x3,y3,'r')
xlabel('x3');
ylabel('y3');
title('图三');
legend('y3=(1+sin(t)-2*cos(4*t))*sint');
grid on;

subplot(2,2,4)
plot(x2,y2,'LineWidth',2);
xlabel('x2');
ylabel('y2');
title('图四');
legend('y2=sin(x)+sin(2*x)');
grid on;

在这里插入图片描述
2.matlab迭代法
在这里插入图片描述

function f = test4(a)
x = a;
f = (x+a./x)./2; 
while abs(f-x) > 0.00001
    x=f;
    f = (x+a./x)./2;
end

简单的求和函数

function f=sumTest(i,j)
f=0;
for temp=i:j
    f=f+temp;
end

二、matlab散点数据变平滑

clc,clear,close all
x = [50,100,200,500,1000,2000,5000,10000,20000]
y = [2.64,2.21,1.38,0.564,0.263,0.396,1.07,1.98,3.14]
xx = 50:0.01:20000; % 插值,因为x的散点数据为[50,20000]在此区间内让数据间隔变小
yy = interp1(x,y,xx,'spline');%interp1函数:一维数据插值函数
plot(x,y,'o',xx,yy,'linewidth',1)
% matlab 中插值时分为 cubic 和 spline ,存在插值方式的不同,一般spline的插值方式性能较好,但计算时长较大
xlabel('频率/Hz','fontsize',15)
ylabel('电压/mv','fontsize',20)
title('幅频特性曲线','fontsize',15)

代码分析:

xx = 50:0.01:20000; 这句代码是关键,运用了插值法,在[50,20000]这个区间内,每隔0.01便补充一个点。插入的点越多,绘制的曲线越圆滑。

plot(x,y,‘o’,xx,yy,‘linewidth’,1) 既绘制散点,也绘制圆滑曲线。‘linewidth’,1指的是曲线线条宽度是1。
在这里插入图片描述
三、matlab的polyfit和polyval函数
1)语法:

 p=polyfit(x,y,n):最小二乘法计算拟合多项式系数。x,y为拟合数据向量,要求维度相同,n为拟合多项式次数。返回p向量保存多项式系数,由最高次向最低次排列。

 y=polyval(p,x):计算多项式的函数值。返回在x处多项式的值,p为多项式系数,元素按多项式降幂排序。
clc,clear
% 我国人口数量
year = [1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 ...
        2001 2002 2003 2004 2005 2006 2007 2008 2009 2010];
num = [114333 115823 117171 118517 119850 121121 122389 123626 ... 
       124761 125786 126743 127627 128453 129227 129988 130756 ...
       131448 132129 132802 133450 134091 ];
 
% 我国人口数量增长图
figure(1)
plot(year,num,'+r');
title('我国人口数量增长图')      
xlabel('年份')
ylabel('人口(万)')
grid on                              % 使用网格线
set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1); % 把网格线变成虚线

p2 = polyfit(year,num,2);
p4 = polyfit(year,num,4);
p6 = polyfit(year,num,6);
y2=polyval(p2,year);
y4=polyval(p4,year);
y6=polyval(p6,year);
figure(2)
plot(year,num,'r+',year,y2,'*',year,y4,'-',year,y6,'o')
legend('人口增长曲线','2阶拟合','4阶拟合','6阶拟合')

拟合示意图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值