matlab自我学习.docx
- 文档编号:9007581
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:23
- 大小:283.32KB
matlab自我学习.docx
《matlab自我学习.docx》由会员分享,可在线阅读,更多相关《matlab自我学习.docx(23页珍藏版)》请在冰豆网上搜索。
matlab自我学习
one,来自E盘jianmo/matlab/MATLAB教程(图形图像处理及MATLAB实现
一,图像画法
补:
4.6.7给当前图形加一条参考线
函数refline
格式refline(slope,intercept)%slope表示直线斜率,intercept表示截距
4.6.8在当前图形中加入一条多项式曲线
函数refcurve
格式h=refcurve(p)%在图中加入一条多项式曲线,h为曲线的环柄,p为多项式系数向量,p=[p1,p2,p3,…,pn],其中p1为最高幂项系数.
4.6.2经验累积分布函数图形
函数cdfplot
格式cdfplot(X)%作样本X(向量)的累积分布函数图形
h=cdfplot(X)%h表示曲线的环柄
[h,stats]=cdfplot(X)%stats表示样本的一些特征
MATLAB中用pie命令画饼图
%functionPlotPie
x=[12345678910];
y=[405060708090100110120130];
str1={'A','B','C','D','E','F','G','H','I','J'};
por=y./sum(y);
fori=1:
length(por)str{i}=[str1{i},'',num2str(100*por(i)),'%'];
end
pie(x,y,str)
对于x=[0.12000.24000.36000.58000.66000.74000.81000.87000.91001.0000]'
随机产生一个数a=rand
怎么样把大于a的第一个x(i)选出来?
x=[0.12000.24000.36000.58000.66000.74000.81000.87000.91001.0000]';
a=rand(1,1);
k=find(x>a)
x(k
(1))
k=
5
6
7
8
9
10
ans=
0.6600
非线性拟和y=a*x^b+c的程序,求a,b,c.
%functionFitPaperData
formatlong
E1=rand(89,1);
E2=rand(89,1)+3;
F=inline('p
(1).*x.^p
(2)+p(3)','p','x');
[p,r,j]=nlinfit(E1,E2,F,[1,2,3]);
p
p=
4.0651680818094960.006602435466971-0.535683924373363
我想写一个函数,输入参数是一个字符串比如是"160",函数主要目的是完成数据存储,我现在的问题是存储文件时,文件命名的问题,比如我想把输入的参数作为文件名的一部分,比如希望输出的文件名为"temp160",这个该怎样实现啊,谢谢!
!
!
i=160;
name=['temp',num2str(i),'.txt'];%假设你想把当前工作区的数据存储为temp160.txt;
eval('save(name)');
[1,2,3,NaN,5,NaN,7,8,9,10]
如何将NaN以外的8个数加起来,然后求这8个数的平均数。
a=[123nan5nan78910];
mean_a=mean(a(~isnan(a)))
在画图时
使用holdon可以保持上一幅图当前图可以画在同一个轴上,而不覆盖。
如果不使用holdon则新图会把旧图覆盖
参见helpholdon
bmpread:
从磁盘中读bmp文件
gifread:
从磁盘中读gif文件
tiffread:
从磁盘中读tiff文件
pcxread:
从磁盘中读pcx文件
图中加注文本(Addtextinthefigure)
text(x,y,’字符串’)
例:
在上图中加语句。
t=0:
pi/100:
2*pi;
y=sin(t);
plot(t,y)
axis([02*pi,-11])
xlabel('0\leq\itt\rm\leq\pi','FontSize',16)
ylabel('sin(t)','FontSize',20)
title('正弦函数图形','FontName','隶书','FontSize',20)
text(3*pi/4,sin(3*pi/4),'\leftarrowsin(t)=0.707','FontSize',16)
text(pi,sin(pi),'\leftarrowsin(t)=0','FontSize',16)
text(5*pi/4,sin(5*pi/4),'sin(t)=-0.707\rightarrow','FontSize',16,...
'HorizontalAlignment','right')
句中:
leftarrow表示加一个向左的箭头
rightarrow表示加一个向右的箭头
HorizontalAlignment表示右对齐水平排列
gtext函数用于在图形窗口上用鼠标直接在指定的位置上加注文本,调用格式:
gtext(‘字符串‘)
例:
t=0:
pi/100:
2*pi;
y=sin(t);
plot(t,y)
axis([02*pi,-11])
xlabel('0\leq\itt\rm\leq\pi','FontSize',16)
ylabel('sin(t)','FontSize',20)
title('正弦函数图形','FontName','隶书','FontSize',20)
gtext('加的内容')
输入数在命令窗口:
F=input('输入优先关系矩阵F:
');
常识:
1whos查看工作空间中变量的详细属性
2inf,Inf:
无穷大nan,NaN:
Not-a-Number,一个不定值,如0/0
3pi:
圆周率,其值为imag(log(-1))i,j:
虚部单位
4格式解释例
format短格式(缺省显示格式),同short3.1416
formatshort短格式(缺省显示格式),只显示5位3.1416
formatlong长格式,双精度数15位,单精度数7位3.14159265358979
formatshorte短格式e方式(科学计数格式)3.1416e+000
formatlonge长格式e方式3.141592653589793e+000
formatshortg短格式g方式3.1416
formatlongg长格式g方式3.14159265358979
formatcompact压缩格式
formatloose自由格式
format+/formatbank/formatrat/formathex(详情查看联机帮助)
5save将所有变量存入文件matlab.mat
savemydata将所有变量存入指定文件mydata.mat
savemydata.mat将所有变量存入文件mydata.mat
6loadmydata载入数据文件中的所有变量
loadmydataAx从数据文件中提取指定变量
7clearAx清除指定的变量
8可以先输入命令的前几个字符,再按上下键缩小搜索范围
命令补全功能:
Tab键用Esc键删除命令行
9常用函数有:
eye(size(A))产生与A矩阵同阶的单位矩阵
zeros(m,n)产生0矩阵
ones(m,n)产生幺矩阵
rand(m,n)产生随机元素的矩阵
Size(a)返回包含两个元素的向量。
Length(a)返回向量的长度。
zeros(m,n)生成一个m行n列的零矩阵,m=n时可简写为zeros(n)
ones(m,n)生成一个m行n列的元素全为1的矩阵,
m=n时可写为ones(n)
eye(m,n)生成一个主对角线全为1的m行n列矩阵,
m=n时可简写为eye(n),即为n维单位矩阵
diag(X)若X是矩阵,则diag(X)为X的主对角线向量
若X是向量,diag(X)产生以X为主对角线的对角矩阵
tril(A)提取一个矩阵的下三角部分
triu(A)提取一个矩阵的上三角部分
rand(m,n)产生0~1间均匀分布的随机矩阵m=n时简写为rand(n)
randn(m,n)产生均值为0,方差为1的标准正态分布随机矩阵
m=n时简写为randn(n)
其它特殊矩阵生成函数:
magic、hilb、pascal
10Matlab图形可视化
1)在同一图形窗口中用命令plot(x,y)绘出正弦余弦函数的图形。
x=0:
0.01:
2*pi;
y=[sin(x);cos(x)];
plot(x,y)
2)二维函数曲线专用命令fplot
3)
subplot(m,n,i)
其含义为:
把图形窗口分割为m行n列子窗口,然后选定第i个窗口为当前窗口。
subplot命令不仅用于二维图形,对三维图形一样适用。
其本质是将figure窗口分为几个区域,再在每个区域内分别绘图。
4)axis([xmin,xmax,ymin,ymax,zmin,zmax])
5)三维曲线绘图命令
三维函数plot3主要用来表现单参数的三维曲线,与二维绘图函数plot相比,只多了第三维数据。
其调用格式为:
plot3(X1,Y1,Z1,s1,X2,Y2,Z2,s2,…)
参数的含义如下:
Xn、Yn、Zn:
第一到三维数据,是尺寸相等的向量/矩阵;
s、s1、s2:
是字符串,用来设置线型、颜色、数据点标记。
例:
t=0:
0.1:
8*pi;
plot3(sin(t),cos(t),t)
title(’绘制螺旋线’)%用命令title对图形主题进行标注
xlabel(’sin(t)’,’FontWeight’,’bold’,’FontAngle’,’italic’)
ylabel(’cos(t)’,’FontWeight’,’bold’,’FontAngle’,’italic’)
zlabel(’t’,’FontWeight’,’bold’,’FontAngle’,’italic’)
%命令zlabel用来指定z轴的数据名称
gridon
6)平面网格点的生成
函数命令meshgrid用来生成x-y平面上的网格点矩阵。
调用形式为:
[X,Y]=meshgrid(x,y)
[X,Y]=meshgrid(x)等价于[X,Y]=meshgrid(x,x)
参数含义如下:
x:
是区间[x0,xm]上分划的向量;
y:
是区间[y0,yn]上分划的向量;
X,Y:
输出变量矩阵,矩阵X的行向量都是向量x,矩阵Y的列向量都是向量y。
函数meshgrid将由两个向量决定的区域转换为对应的网格点矩阵。
[X,Y]=meshgrid(-2:
2:
2,-2:
2:
2);
[X,Y]%将划分结果输出至矩阵
ans=
-202-2-2-2
-202000
-202222
Z=X.*exp(-X.^2-Y.^2);%计算网格点上的函数值赋予变量
Z
Z=
-0.000700.0007
-0.036600.0366
-0.000700.0007
10,利用三维网格表面命令surf绘制图形。
z=peaks;%绘制山峰的图像,将函数值赋予变量z
surf(z)%对山峰的图像进行着色处理
shadinginterp%函数shading改变着色方式
11,a.柱面的表达cylinder
cylinder命令中,柱面的轴线定义为z轴,只要给出母线的描述就可完成一个柱面。
调用格式为:
[X,Y,Z]=cylinder(R,N);
[X,Y,Z]=cylinder(R):
缺省值N=20;
[X,Y,Z]=cylinder:
缺省值N=20,R=[1,1]。
R:
是一描述柱面母线的向量;
N:
是旋转柱面上的分割线条数;
[X,Y,Z]:
是返回的x,y,z坐标向量。
绘制一个柱面。
t=pi:
0.01:
3*pi;
r=sin(t)+t;
cylinder(r,30)
shadinginterp
12,b.球面的表达sphere
调用格式为:
[X,Y,Z]=sphere(N):
产生一个(N+1)×(N+1)的矩阵,然后用函数surf命令绘制一个单位的球面,N为设置分割线的条数;
[X,Y,Z]=sphere:
缺省
值N=20。
画一个球面。
[X,Y,Z]=sphere;
surf(X,Y,Z)
13,特殊图形绘制
13.1.面积图命令area
表现各个不同部分对整体所作的贡献
area(X,Y):
与plot的命令的使用方法相似,将连线图到x轴的那部分填上了颜色;
area(Y):
缺省值X=1:
SIZE(Y);
area(X,Y,LEVEL)或area(Y,LEVEL):
填色部分为由连线图到y=level的水平线之间的部分。
绘制一面积图
X=-2:
2;
Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1];
area(X',Y')
legend('因素1','因素2','因素3')
gridon
13.2用绘制直方图的几种命令绘制直方图。
X=-2:
2;
Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1];
subplot(2,2,1)
bar(X,Y','r')
xlabel('x')
ylabel('y')
colormap(cool)
subplot(2,2,2)
barh(X,Y','grouped')
xlabel('y')
ylabel('x')
colormap(cool)
subplot(2,2,3)
bar(X,Y','stacked')
xlabel('x')
ylabel('\Sigmay')
colormap(summer)
13.3绘制三维直方图。
X=-2:
2;
Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1];
subplot(2,2,1)
bar3(X,Y','r')
zlabel('y')
ylabel('x')
colormap(cool)
subplot(2,2,2)
bar3h(X,Y','grouped')
ylabel('x')
zlabel('y')
colormap(cool)
subplot(2,2,3)
bar3(X,Y','stacked')
ylabel('x')
zlabel('\Sigmay')
colormap(summer)
13.3.饼图命令pie
饼图又叫扇形图,用于显示向量中元素所占向量元素总和的百分比。
pie和pie3分别用于绘制二维和三维饼图。
调用格式:
pie(X):
向量X的饼图。
把X的每一个元素在所有元素总和中占的比例表达出来;
pie(X,EXPLODE):
向量EXPLODE(和向量X长度相等)用于指定饼图中抽出一部分的块(非零值对应的块);
pie(...,LABELS):
LABELS是用于标注饼图的字符串数组,其长度必须和向量X相等;
H=pie(...):
返回包括饼图和文本对象句柄。
用函数pie和pie3绘制饼图。
x=[200,360,120,400,320];
subplot(2,2,1),
pie(x,[00010])
subplot(2,2,2),
pie3(x,[00010])
subplot(2,2,3),
pie(x(2:
5))
subplot(2,2,4),
x=[0.1,0.12,0.21,0.34,0.11];
pie3(x,{'A','B','C','D','E'})
13,4极坐标、柱坐标和球坐标系下绘制图形
1.极坐标系下绘制图形
ploar是直接在极坐标系下绘图的命令
调用格式为:
ploar(THETA,RHO,S)
其中S是字符串,用来控制图形的线型。
绘制半径为2的渐开线。
rhe=2;
theta=0:
pi/20:
4*pi;
rho=rhe+theta*rhe;
polar(theta,rho,'r')
14,坐标轴的调整和图形的标注
14.11坐标轴调整命令
2.图形标注
坐标轴和图形标题标注
标注坐标轴x、y和z的命令函数为xlabel、ylabel和zlabel,调用格式为:
xlabel(’text’)
xlabel(’text’,’Property1’,PropertyValue1,’Property2’,PropertyValue2,...)
H=xlabel(...)返回坐标轴标注的句柄。
其中,’text’是要添加的标注文本。
’Property’是文本的属性名,’PropertyValue’是属性值(所用字体、大小、标注角度等)。
图形加标题的函数为title,其调用格式与坐标轴标注类似。
b.图例的标注
legend命令实现不同图例的说明。
其调用格式为:
legend(string1,string2,string3,...)
legend(string1,string2,string3,...,Pos)
按顺序把字符串添加到相应的曲线线型符号之后;Pos对图例的位置作出设置和调整:
0=自动把图例置于最佳位置(和图中曲线重复最少);
1=置于图形窗口的右上角(缺省值);
2=置于图形窗口的左上角;
3=置于图形窗口的左下角;
4=置于图形窗口的右下角;
-1=置于图形窗口的右侧(外部)。
3.控制分格线
对二维和三维图形都适用。
有三种用法:
gridon:
打开分格线控制开关,以后绘制的图形都带有分格线;
gridoff:
关闭分格线控制开关,以后绘制的图形都不带分格线;
grid:
用于实现分格线绘制切换。
绘制图形,并用函数xlabel、title和legend命令进行标注。
t=0:
0.1:
4*pi;y=sin(t);y1=cos(t);plot(t,y,':
',t,y1,'r*')
xlabel('x轴(0--4\pi)','fontsize',12,'fontweight','bold')
ylabel('y轴','fontsize',12,'fontweight','bold')
title('绘制正弦波和余弦波Pos=1','fontsize',10,'fontweight','bold','fontangle','italic')
text(pi,0,'\leftarrowsin(\pi)=0')
text(pi,-1,'\leftarrowcos(\pi)=-1')
text(pi/2,0.9,['\uparrowsin(\pi/2)=',num2str(sin(pi/2))])
text(0,-0.6,['绘图日期:
',date])
text(0,-0.8,['MATLAB版本:
',version])
legend('正弦波','余弦波')
figure
(2)
plot(t,y,':
',t,y1,'r*')
title('绘制正弦波和余弦波Pos=0','fontsize',10,'fontweight','bold','fontangle','italic')
legend('正弦波','余弦波',0)
gridon
figure(3)
plot(t,y,':
',t,y1,'r*')
title('绘制正弦波和余弦波Pos=-1','fontsize',10,'fontweight','bold','fontangle','italic')
text(7*pi/2,0,'\rightarrowcos(\pi*7/2)=0')
legend('正弦波','余弦波',-1)
gridoff
二,Matlab符号运算
Matlab的符号数学工具箱可以完成几乎所有得符号运算功能。
主要包括:
符号表达式的运算,符号表达式的复合、化简,符号矩阵的运算,符号微积分、符号作图,符号代数方程求解,符号微分方程求解等
1,sym函数用来建立单个符号变量,一般调用格式为:
符号变量=sym(A)
参数A可以是一个数或数值矩阵,也可以是字符串
2,syms命令用来建立多个符号变量,一般调用格式为:
syms符号变量1符号变量2...符号变量n
3,符号表达式的建立:
(1)用sym函数直接建立符号表达式。
(2)使用已经定义的符号变量组成符号表达式。
y=sym('sin(x)+cos(x)')x=sym('x');y=sin(x)+cos(x)
4,按字母顺序列出符号表达式expr中的所有符号变量
f=sym('2*w-3*y+z^2+5*a')findsym(f),
4,subs(f,x,a)
用a替换字符函数f中的字符变量x
a是可以是数/数值变量/表达式或字符变量/表达式
(若x是一个由多个字符变量组成的数组或矩阵,则a应该具有与x相同的形状的数组或矩阵。
)
如:
A=sym('[1+x,sin(x);5,exp(x)]');
A(1,2)%引用
A(2,2)=sym('cos(x)')%重新赋值
得:
ans=
sin(x)
A=
[x+1,sin(x)]
[5,cos(x)]
三,类常见符号运算
1,因式分解
>>s=factor(100)
s=
2255
>>symsx;f=x^6+1;
factor(f)
ans=
(x^2+1)*(x^4-x^2+1)
2,函数展开
symsxy;f=sin(x+y);
expand(f)
得
ans=
cos(x)*sin(y)+cos(y)*sin(x)
3,合并同类项
collect(f,v):
按指定变量v进行合并
collect(f):
按默认变量进行合并
4,函数简化
y=simple(f):
对f尝试多种不同的算法进行简
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 自我 学习