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阶拟合')
拟合示意图: