matlab学习笔记

更新时间:2024-03-26 18:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1).

>> x=-2*pi:0.1:2*pi; >> y1=sin(x);

>> y2=sin(x+pi/3)+2; >> y3=cos(x); >> plot(x,y1,'.-'); >> hold on

>> plot(x,y2,'.-') >> hold on

>> plot(x,y3,'.-') >> plot(x,y1,'.-'); >> hold on

>> plot(x,y2,'.-') >> hold on

>> plot(x,y3,'.-')

>> h=legend('sin($x$)','sin($x+\\frac{\\pi}{3}$)','cos($x$)') h =

159.0056

Warning: Unable to interpret TeX string \>> set(h,'Interpreter','latex') >> xlabel('$x$','Interpreter','latex') >> ylabel('$y$','Interpreter','latex') %添加函数图标及纵横坐标轴名称,如下图显示 >>

2).常用画图命令:

Surf(x,y,z)、ezsurf(z)、ezmesh(z)

%使用surf画图,要求想x,y,z是同维数的矩阵

%使用ezsurf和ezmesh时,曲面函数必须能写成显函数的形式,如Z?sin(xy)/(xy)

%可以使用@(x,y)+函数表达式 定义匿名函数,如z?@(x,y)sin(x*y)/(x*y) %surf(x,y,z,x); %设置图形颜色变化方向为沿x轴,此项可省,一般不要求。 图形属性: axis属性

Axis tight %将坐标轴减小到可能的最小尺寸 Axis equal %使x,y轴的刻度设置相同 Axis square %使图形长宽相同 Axis off %不显示坐标轴

Axis([x0 x1 y0 y1 z0 z1]); %手动改变轴的范围

View(n,m) %设定图形观察视角,n为在水平方向测量的角度,m为从水平面向上测量的仰俯角。

Subplot(n,m,x) %将图像窗口分为nxm个子窗口,当前指的是第x个,按行数。当要对第y个图做一定的设置时,先输入命令subplot(n,m,y),然后再输入要做的设置命令。

Legend(‘xxx’) %给图形设置图标,也可指定图标的位置,默认为右上角。 Text(x,y,‘xxx’) %给图像添加注释内容,注释位于图形中(x,y)处。 Gtext(‘xxx’); %给图像添加注释,位置随意,将十字光标点在哪儿就放哪儿。 delete(findobj('type','text')) %删除通过gtext()命令添加的注释内容 Close all %关闭所有图像窗口 Title(’xxx‘) %给图形添加标题

Material属性,设置曲面的材料属性,值有dull,shiny,metallic,该命令可结合用在surf,mesh,pcolor,fill,fill3等函数中。

Plotyy(x,y1,x,y2,’plot’) %在同一个图中画出两个图形,公用一个横轴,纵轴不同,分列两边,且纵轴刻度设置可不同,自动的。

Semilogx 和semilogy 表示横轴和纵轴采用对数坐标画出x-y的图形,用法为semilogx(x,y)和semilogy(x,y).

Loglog(x,y) %横纵轴均采用对数形式画出x-y图形

Grid on %打开网格,系统默认为grid off ,即关闭网格。 A=Complex(x,y) %产生复数A=x+yi Real(A)=x,imag(A)=y.

Fill(x,y,n) %产生一个有x,y坐标定义的填充颜色的图形,填充颜色根据n对色图进行索引确定。

light('Color',选项一,'Style',选项二,'Position',选项三),选项一为表示光的颜色的矩阵,取RGB三元组或相应的颜色字符。选项二可取为'infinite'和'local'两个值,分别表示无穷远光和近光。选项三为三维坐标点组成的向量形式[x,y,z]。对远光,它表示光穿过该点射向原点;对于近光,它表示光源所在位置。假如函数不包含任何参数,则采用缺省设置:白光、无穷远光、穿过(1,0,1)射向坐标原点。一般后两个参数可省,默认。--例: [x,y,z]=peaks; surf(x,y,z); shading interp;

light('Color',[1 0 1],'Style','local','Position',[-4,-4,10]); %此命令表示在点[-4,-4,10]处有一处品红色光源

例1.画出椭圆柱面图:

?x?3cos?,??y?2sin?, ??z?t,t?R,

编写的matlab程序如下:

x?@(a,t)3*cos(a);y?@(a,t)2*sin(a);z?@(a,t)t; ezmesh(x,y,z)%定义匿名函数 %因为没能写成显函数的

形式,所以调用命令函数ezmesh时使用格式ezmesh(x,y,z),当能写成显函数时可以直接调用格式ezmesh(z)。

例2.绘制二元函数三维表面图:

z? 程序如下:

sin(xy)xy

[x,y]?meshgrid([?3:0.2:3]); z?@(x,y)sin(x*y)/(x*y);ezmesh(z)Meshgrid的用法举例:两种情况

%产生所定范围内的二维点阵

%或用ezsurf(z),所画图像颜色效果不同

3)积分命令:

a).Int---符号积分法

应用: int(s)符号表达式s的不定积分.

int(s,v)符号表达式s关于变量v的不定积分.

int(s,a,b)符号表达式s的定积分, a,b分别为上﹑下限. int(s,v,a,b)符号表达式s关于变量v从 a到b的定积分. 当int求不出符号解,会自动转求数值解.

注:使用符号积分时需结合使用syms--符号定义命令,例如声明两个符号变量 x,y,matlab语句格式为:Syms x,y;

例3.求函数不定积分:sin(x)?cos(2*x)?exp(x.^2) Matlab程序为:

symsx; A?sin(x)?cos(2*x)?exp(x.^2);%函数A%对函数A求关于x的导数并赋给z

z?int(A) b).一重数值积分命令:quad(f,a,b)、quadl(f,a,b) 其中f为积分函数,a、b为积分上下限。 例4.求数值积分

?1?012x?3x2

Matlab程序如下:

f?@(x)(2*x?3)./(1?x.^2); I?quad(f,0,1)或用I=quadl(f,0,1),结果的精度不同

c).二重数值积分命令:dblquad(f,a,b,c,d)

其中a,b为外重积分限,c,d为内重积分限,f为积分函数。 d).三重数值积分命令:triplequad(f,a,b,c,d,e,f)

其中a,b为外重积分限,c,d为中间重积分限,e,f为内重积分限,f为积分函数。 4).几个特殊矩阵:

eye(n):n阶单位矩阵; Ones(n):n阶1矩阵; Zeros(n):n阶0矩阵;

5).矩阵运算:

乘法:格式 a*b; %注意和数组矩阵乘法区别a.*b;注,乘以逆和标准除法等同右乘,后除可抵消对矩阵做的左乘效果。

求逆:格式 inv(a)和运算符向后除\\,例inv(a)*c<=>a\\c;注,c/a表示( 指数运算:

k-kC'\\B)'

'A和A,其中k为正数,分别表示A连乘K次,和???

rot90(A,n):将矩阵A逆时针旋转n个90度 tril(A):保留A的下三角并将上三角填充为0.

unit8,unit16(A):将A中数据转化为固定位数的无符号整数类型。

6)几个命令函数:

find():查找命令;

例:a(find(a==0))=inf ,表示把a矩阵中的0元素全部替换为无穷。

Min():查找最小命令;

Numel(a),计算矩阵a的元素个数;

[y n]=Max(x,[],2),查找最大元素及其位置,返回值y为最大值,n为对应位置 7)Matlab与记事本的数据交互:

A).matlab读入记事本文件中的数据:

如果记事本文件*.txt中内容全部为数值是,可直接调用命令A=load(‘*.txt’),由此matlab中会生成一个数值矩阵A。

如果文件中不全为数值,则不能用load命令,应该用[name,type,value]textread(‘*.txt’,‘%s %n %f’,2),此格式代表文件中第一列为字符串,第二列为整数,第三列为浮点数,读取命令只读取文件中的前两行,生成三个列矩阵name type value,具体情况具体分析。

注:要求所读取的txt文件的位置必须在matlab中“当前目录”中包含,如当前目录为:D:\\temp\\work,则txt文件必须保存在该路径下,否则命令执行出错。 Fscanf():更强大的一个读取命令。

B).将matlab数据写入记事本文件中:

如果只想保存数值数据,则可调用save命令,格式为:save filename a b ...; 代表把变量a ,b ...等值存入名为filename的.mat格式的文件中,该文件的路径为“当前目录”。且该文件只能用matlab打开,其他软件无法打开。

如果想把各种数据保存为.txt文件,则应该使用fprintf命令,格式为: Fid=fopen(‘file.txt’,wt); %打开一个文件,并返回一个指标fid Fprintf(fid,’数据表1\\n’); %可省

Name=’sally’;types=1;x=3;y=4; %赋值一次

Fprintf(fid,’%s type%n %f %f’,name,types,x,y); %写入一次 Name=’jim’;types=2;x=1;y=3; %第二次赋值

Fprintf(fid,’%s type%n %f %f’,name,types,x,y); %第二次写入 Fclose(fid); %关闭文件 则生成一个txt文件,内容为: 数据表1 Sally 3 4 Jim 1 3 8)数据拟合:

A).多项式拟合:

指令拟合:p=polyfit(x,y,n); %返回系数矩阵p;

Yi=Polyval(p,xi); %计算多项式的拟合函数值 用命令poly2sym(p)输出拟合函数表达式

图形窗口拟合:先画出散点图,plot(x,y,’r*’);然后在图形窗口上点击Tools下的basic fitting,打开拟合对话框进行操作。

B).指定函数类型拟合:

假设根据散点图知道拟合函数类型为f(x)形式的,则可利用.m进行拟合。 编写m文件:

symst; x??;;;;?;y??;;;;?;%定义自变量符号t%输入数据 f?fittype('f?x?','independent','t','coefficients',{'a','k','w'});

%定义拟合函数类型,自变量t,系数a,k,w;cfun?fit(x,y,f)xi=0:.1:15;yi=cfun(xi);plot(x,y,'r*',xi,yi,'b-');%显示拟合函数

然后保存M文件,命名为cfun.m;然后就可以在matlab命令窗口中输入文件名执行文件内容了,产生拟合结果。

C).曲线拟合工具箱:

首先输入要拟合的数据x和y矩阵,在matlab命令窗口中直接输入cftool(x,y)即可调出工具箱窗口界面,然后选择拟合类型等参数进行拟合即可。 8).matlab中的各种数学函数

inv 是矩阵求逆

quad 是求积分运算,并且是定积分 roots 是多项式求根

Round(x)就近取整

9).线性规划问题:

Matlab中线性规划的标准型为:

minc

xTx%目标函数,当约束条件不是标准型时必须转化为标准型。

s..tAx?b%约束条件 基本函数形式为linprog(c,A,b),它的返回值是向量x的值。还有其他一些调用格

式,如:

其中,fval返回目标函数的值,[x,fval]?linprog(c,A,b,Aeq,beq,LB,UB,x0,options),Aeq和beq对应等式约束Ax?b;LB和UB分别是x的上下界,是控制参数。

例6.解下列线性规划问题:

x0为x的初始值,optionsmaxz?2x1?3x2?5x3

?x1?x2?x3?7,可以编写M文件,如下: ?s..t?2x1?5x2?3x3?10?x1,x2,x3?0?c?[2;3;?5];a?[?2,5,?1];b??10;aeq?[1,1,1];beq?7;x?linprog(?c,a,b,aeq,beq,zeros(3,1));%是-c而非c,zeros(3,1)为初始值value?c'*x;%目标函数值

注:约束条件中有等号的药单独拿出来,写成aeq和beq的形式,目标函数是最大值时要加符号变成最小;当目标函数中含有常数项时要添加一个变量一个等式

x,并在约束条件中添加

ixi?1。

10)图形处理:

Matlab 可识别的图片文件格式有:tiff,png,hdf,bmp,jpg,jpeg,pcx,xwd,cur,ico等; Matlab 读取图像并转化为真彩图像、灰度图像、索引图像中的任一种。三种图形介绍略。

读取命令:p=imread(‘filename.jpg’,’jpg’),matlab使用这一个命令读取所有类型的图形文件。返回值p为一个MxNx3的包含unit8类型像素颜色值的数组,第二个参数‘jpg’给出了明确的文件格式,该参数可选,因为matlab一般能够从文件的内容正确推断出该文件的格式。

显示命令:image(p),只是该函数是对对象进行了缩放,若要得到实际尺寸的图形,可用命令函数imshow();

写入命令:imwrite(data,’newfilename.jpg’,’jpg’),第三个参数jpg指定输出文件的格式,data为像素数据矩阵,该命令将data数据写入硬盘,存储格式为jpg格式。

movie2avi:动画存储为avi格式命令 分析例子:

求助,如何将下列动画存为avi格式。

set(gca,'nextplot','replacechildren');[a,b,c]=sphere(30);mesh(2*a,2*b,2*c,2*c);hidden off;hold on;for j=1:24[x,y]=meshgrid([-sqrt(2):0.01:sqrt(2)*j/24]);z=x.^2+y.^2;mesh(x,y,z);axis equal;F=getframe;endmovie(F,2);

用matlab制作简单仿真动画,并生成.avi格式的电影文件:

第一种形式:利用for循环,在一定时间内控制图形窗口图像的显示,产生一段动态的演示过程: 如下:

set(gcf,'color','green'); grid on;

set(gca,'zlim',[-10,10]'); set(gca,'xlim',[-10,10]); set(gca,'ylim',[-10,10]); for i=1:10

set(gca,'view',[-i*3.75,3*i] ); pause(0.2); end

第二种形式:利用moviein和movie函数,现将生成的动画存入一个由movien

函数定义的数组中,每一帧为数组的一个元素,最后用movie重复演示,movie后面的数字代表演示次数。

x=[-30:0.2:30]; y=[-30:0.2:30];

[x,y]=meshgrid(x,y); n=5;

M = moviein(n); for i=1:n

z=sin(sqrt(2*(x).^2+2*(y).^2)-2*pi*i/10); zz=plot3(x,y,z,'parent',gca); mesh(x,y,z); grid on;

colormap([0,0.9,0.5]);

light('position',[1,1,2],'style','local','color','white'); material([0.5,0.4,0.3,10,0.3]); set(gca,'zlim',[-10,10]'); M(i)=getframe(gca); end

movie(M,20)

创建电影剪辑文件,并存储起来,如下:

aviobj=avifile('文件名.avi','fps',3);%定义一个avi文件,

%AVIOBJ = AVIFILE(FILENAME,'PropertyName',VALUE,'PropertyName',VALUE,...) %各属性详细说明见matlab帮助

for i=1:n

%在当前窗体上生成一帧图像

frame=getframe(gca); %获得一帧图像

aviobj=addframe(aviobj,frame);%并加到电影剪辑文件中 end

aviobj=close(aviobj);%关闭文件,结束数值仿真模拟过程。

11).声音的处理

Matlab提供两种读取声音文件的函数:wavread(‘filename.wav’)和auread(‘filename.au’),非别读取wav格式的文件盒au格式的文件;且两个函数均返回三个变量:取值(-1,1)之间的声音向量(n行1列)--代表振幅、以HZ为单位的采样频率(1个常数)和记录数据所用的位数(8位或16位,分辨率不同而已。%分辨率取值一般8位或16位%)。

播放命令:sound(data,rate),其中data是声音值向量,rate为回放频率,一般等于录音时的频率。该函数直接将数据传递为计算机的声卡。

例:[b16,f16,n]=wavread(‘filename.wav’); Sound(b16,f16);

[b8,f8,n]=wavread(‘filename.wav’);

Sound(b8,f8); %可分辨8位和16位音质的差别

声音片段剪切:例

[a,b,n]=wavread(‘filename.wav’);

C=[a(1:2000);a(3000:end)]; %将文件中2000-3000的片段剪切掉并将剩余片段组合起来存入c。

C=C*0.5; %将音频音量降低一半 Sound(a,b); %播放原文件

Sound(c,b); %播放剪切后的文件,对比效果 Plot(a); %画出原音频图像

Plot(c) %画出剪切后的文件图形

快速傅里叶变换fft(x):x为时域采样序列,生成取值为复数的频谱文件;ifft(x):逆变换,重新生成时域序列。 12)随机排序

如:x=[1,2,3,4,3,2,1,5],编写程序将数据随机排序,程序如下 X=X(randperm(numel(x)))

numel(x)获得变量长度

randperm(n)产生长度为n的随机数列 如: randperm(4) ans=

3 2 1 4

X(...) 取得X中相应元素产生新数列

附录A:matlab特殊字符、保留字和函数 .* / ./ \\ ^ .^ < > <= >= == ~= & && | || ~ 逻辑函数 All(a) 若逻辑向量a中的所有值都为真,则返回值为真 And(a,b) 若a,b都为真,则返回值为真 Any(a) Not(a) Or(a,b)

文件输入输出 load save csverad fprinft imread 若逻辑向量a中有元素为真,则返回值为真 非a,即若a为真,则返回值为假,若a为假,则返回值为真 若a或b为真,则返回值为真 小于 大于 小于等于 大于等于 等于 不等 元素级逻辑与(向量) 短路逻辑与(标量) 元素级逻辑或(向量) 短路逻辑或(标量) 一元非 数组乘法 矩阵除法 数组除法 矩阵后除,等同求逆效果 矩阵指数运算 数组指数运算

imwrite 格式控制符 %e指数表示法 Fclose(file) %q由双引号界定的引用串 %s字符串 \\n换行 \\t制表 \\b退格 %f定点或十进制表示法 %g定点或指数表示法

Ans默认储存变量 Clc清屏 Clear清楚变量 Clf清空当前图形

Close all关闭所有窗口 Exit,quit关闭matlab Load载入文件 Who,whos查看所有变量

Eps两个浮点数之间可能出现的最小差 Pi圆周率 False逻辑假 Inf无穷大 NaN非数值 基本数学函数 Exp(x)指数函数 Fix(x)将x向0方向舍入取整 Floor(x)将x向负无穷舍入取整 Round(x)将x就近取整 Sqrt(x)开方 Sin(x)正弦 Cos(x)余弦 Tan(x)正切 向量数组矩阵操作 Cumsum(v) Deal() Det(a) Diag(a) Eye() find Fliplr() Inv(a) Length(a) Magic(c) 计算v中元素的累积和 给变量分配返回的元胞数组型结果 计算矩阵行列式的值 抽取aj矩阵的对角元素或以向量a为对角建立矩阵 生成单位阵 左右翻转矩阵 矩阵求逆 获取a的最大维数 生成魔方矩阵 Asin(x)反正弦 Acos(x)反余弦 Atan(x)反正切 Atan2(y,x)给定x和y,计算反正切 True逻辑真 Log(x)自然对数 Log10(x)以10为底的对数 Mod(x,a)计算x/a的余数 Rem(x,a)同上 Linspace(fr,t,n) 定义一个线性间隔的向量 [v,in]=max(a) Mean(a) Ones(n,m) Prod(x) Rand(n,m) Randn(n,m) Size(a) sparse [v,in]=sort(v) Sum(a) Zeros(n,m) Meshgrid(x,y) 2-D绘图 bar barh contour hist loglog pie plot polar semilogx semilogy 3-D绘图 Bar3 Barh3 gplot Mesh(x,y,z) Meshc(x,y,z) Meshz(x,y,z) meshgrid(n,m) peaks Pie3 Plot3() sphere surf surfc waterfall plotyy 查找a中最大元素的值和位置 计算a中元素的平均值 生成1矩阵 计算x中所有元素的乘积 产生0,1之前均匀分布的对应维数矩阵 产生0,1之间正态分布的对应维数矩阵 得到数组a的维数大小 定义稀疏矩阵 对向量v进行排序 计算a中元素之和 产生对应维数的0数组 将向量x,y分别映射成二维数组 产生条状图 产生水平条状图 产生等高线图 产生直方图 产生x,y轴均为对数尺度的图 产生饼图 产生x-y图 产生极坐标图 仅x轴为对数尺度产生x-y图 近y轴为对数尺度产生x-y图 三维条状图 水平三维条状图 按图论法则绘图 绘制曲面的网格图 绘制带有等高线的曲面网格图 绘制带有扩展垂直线的曲面网格图 产生三维绘图用的网格 产生采样矩阵用来要是绘图函数 绘制三维饼状图 绘制三维曲线图 演示绘图的例程函数 绘制曲面图 绘制带有等高线图的曲面图 产生仅在x轴具有扩展垂直线的网格曲面图

图形外观指示符 - 实线 : 点线 -. 点划线 色图值,与colormap命令搭配使用 hsv autumn bone colorcube copper flag hot jet pink prism spring summer white winter cool -- 虚线 . 圆点 O 圆圈 X x符 + 加号 * 星号 S 方块符 D 菱形符 < 朝左三角符 > 朝右三角符 P 五星角符 H 六星角符

Cftool拟合工具箱的用法:

1.在Matlab 6.5以上的环境下,在左下方有一个\按钮,如同Windows的开始菜单,点开它,在目录\下有一个\,点开\,出现数据拟合工具界面,基本上所有的数据拟合和回归分析都可以在这里进行。 下面给你简单介绍一下它的使用方法。

首先在Matlab的命令行输入两个向量,一个向量是你要的x坐标的各个数据,另外一个是你要的y坐标的各个数据。输入以后假定叫x向量与y向量,可以在workspace里面看见这两个向量,要确保这两个向量的元素数一致,如果不一致的话是不能在工具箱里面进行拟合的。 例如在命令行里输入下列数据:

x=(0:0.02:0.98)';

y=sin(4*pi*x+rand(size(x)));

此时x-y之间的函数近似的为正弦关系,频率为2,但是存在一个误差项。 可以通过作图看出它们的大体分布:

plot(x,y,'*','markersize',2); 打开曲线拟合共工具界面,点击最左边的\按钮,出现一个Data对话框,在Data Sets页面里,在X Data选项中选取x向量,Y Data选项中选取y向量,如果两个向量的元素数相同,那么Create data set按钮就激活了,此时点击它,生成一个数据组,显示在下方Data Sets列表框中。关闭Data对话框。此时Curve Fitting Tool窗口中显示出这一数据组的散点分布图。

点击Fitting...按钮,出现Fitting对话框,Fitting对话框分为两部分,上面为Fit Editor,下面为Table of Fits,有时候窗口界面比较小,Fit Editor部分会被收起来,只要把Table of Fits上方的横条往下拉就可以看见Fit Editor。在Fit Editor里面点击New Fit按钮,此时其下方的各个选框被激活,在Data Set选框中选中刚才建立的x-y数据组,然后在Type of fit选框中选取拟合或回归类型,各个类型的拟合或回归相应的分别是: Custom Equations 用户自定义函数 Expotential e指数函数

Fourier 傅立叶函数,含有三角函数 Gaussian 正态分布函数,高斯函数

Interpolant 插值函数,含有线性函数,移动平均等类型的拟合 Polynomial 多项式函数 Power 幂函数

Rational 有理函数(不太清楚,没有怎么用过)

Smooth Spline ??(光滑插值或者光滑拟合,不太清楚) Sum of sin functions正弦函数类 Weibull 威布尔函数(没用过)

不好意思,没有学过数理统计,所以很多东西都是用了才知道,翻译也就不太准确。不过在Type of fit选框下方有一个列表框,基本上各个函数类里的函数都写成解析式列在下方以供选择,所以找合适的函数还是比较容易的。

在这个Type of fit选框中选择好合适的类型,并选好合适的函数形式。于是点击Apply按钮,就开始进行拟合或者回归了。此时在Curve Fitting Tool窗口上就会出现一个拟合的曲线。这就是所要的结果。

在上面的例子中,选择sum of sin functions中的第一个函数形式,点击Apply按钮,就可以看见拟合得到的正弦曲线。

在Fitting对话框中的Results文本框中显示有此次拟合的主要统计信息,主要有 General model of sin1: ....... (函数形式)

Coefficients (with 95% conffidence range) (95%致信区间内的拟合常数) a1=... ( ... ...) (等号后面是平均值,括号里是范围)

....

Godness of fit: (统计结果) SSE: ... (方差)

R-squared: ... (决定系数,不知道做什么的)

Adjusted R-squared: ... (校正后的决定系数,如何校正的不得而知) RMSE: ... (标准差)

上面的例子中经过拟合得到的函数最后为

y=0.9354*sin(12.36x+6.886)

频率为1.98加减0.03,和原来设置的频率为2符合,相对误差为1.5%。

这是曲线拟合工具箱的一个最简单的使用方法,上面还有很多功能,写是写不完的,自己参照这个基本的思路,翻着英汉词典,看着帮助,然后一个按钮一个按钮的试吧。

另外要说的是,如果想把这个拟合的图像导出的话,在Curve Fitting Tool窗口的File菜单下选Print to Figure,此时弹出一个新的图像窗口,里面是你要导出的图像,在这个figure窗口的File菜单里再选Export,选择好合适的格式,一般是jpeg,选择好路径,点击OK就可以了。出来的图像可以在Word等编辑环境中使用,就不多说了。

要修改图像的性质,如数据点的大小、颜色等等的,只需要在对象上点右键,就差不多可以找到了。

一些总结: (1)help 命令 可以查其用法 (2)“;”的用法 不加“;”显示结果 加“;”时不显示结果

(3)数列之间的运算要加\

(4)在matlb中函数总是以离散数列形式给出的 (5)常数: pi=圆周率; j=i=虚单元;

ans=计算机结果的缺省变量名 (6)数列:a=[1 5 8 0 2] 矩阵:a=[1 5 8;0 8 4]

改变数列的某一个项的值:a(1)=11,则a=[11 5 8 0 2]//注意不是a(0)

一:matlb的序列的表示方法 1:枚举法

eg a=[0 1 2 3 4 5 6 7 8 9] 2:已知首相尾相,与等差 eg a=0:1:9

或者简写成 a=\等差1可省略) 3:已知首相尾相,与序列总数 eg a=linspace(0,9,10)

应用:x轴可写为 x=[0:n-1] 二:画图

1:画出离散图形:stem

eg stem(y) 注意,此时的x由系统自定。

stem(x,y) 注意,x与y数列的点数一定要相同。 2:画出连续图形:plot eg plot(x,y)

plot(y)

3:把多个图放在一块:subplot(子图)

eg subplot(3,1,2)//一共三行一列,此图在第2个 eg subplot(3,2,5)//一共三行两列,此图在第5个 4:指定图形标题栏:title('') eg title('频谱图') 注意,要加''

指定x(自变量)轴标注文字:xlabel('') 指定y(自变量)轴标注文字:ylabel('') 5:坐标轴的范围的刻画:axis[x1,x2,y1,y2] 以坐标纸方式显示: grid 应用: eg x=[0:9]; 定义x轴 y=sin(2*pi/30*x)./x; 定义y轴

subplot(3,1,1); 在适当位置处画出一个空白的图像 plot(x,y); 填充此图像

title('一个例子'); 为此图像加标识 6:把多个图形画于同一个坐标中 eg plot(t, y, t, y0, t, -y0)

plot(t, y, '-r', t, y0, ':b', t, -y0, ':b')//'-r'表示红色线;':b'表示虚蓝线

如果后续图形也要画在当前的同一图形窗内,并且希望二条线同时存在,可输入:hold on;hold off关闭。 7:不同的线的画法

具体的直角坐标图绘图格式:plot(x,y,'cm')

式中x为自变量,y为因变量,c为颜色标记,m为线型标记符

b 蓝色 g 绿色 r 红色 c 青色 m 洋红 y 黄色 k 黑色 w 白色 . 小黑点(线型)o 小圈号 x 叉号 + 十字号 * 星号 s 方形 d 菱形 v 三角形

三角形(向上) < 三角形(向左) > 三角形(向右) p 五角星 h 六角星 - 实连线 : 虚点连线 -. 点划连线 -- 双划连线 注意:先写subplot,再写plot,最后为title axis等 figure窗口不消失:grid on; 三:提取性质

1:提取出数列的长度:length(数列) 四:运算

数列之间的运算要加\

1:四则运算:+ ;- ;* ;/ ;以及数列之间的运算:.+ ;.- ;.* ;./; 注意当分母为一个数列时,只能用./不能用/ 取余运算:mod(a,b) Eg1

mod(13,5) ans =

3 Eg2

mod([1:5],3) ans =

1 2 0 1 2

取整: Fix(a)

2:三角函数:sin();cos();tan();cot(); 3:幕运算:^以及数列之间的运算:.^ 指数运算:exp() 应用:eg n=\ x=\

W=(pi/12.5)*k; //w=(2*pi/25)*k y=(exp(-j*pi/12.5)).^(n.*x); eg x=\ w=(pi/12.5);

y=\);//所得为一系列复数 注意有数列时则一定用.^不用^ eg:a=0:9; b=\ c=\

(自己记:符号两边不对称的,一旦有一个数列,则用.) 4:复数相关

abs()复数大小(幅频特性) angle()复角(相频特性) real()实部 imag()虚部 5:累加

一维数组的话直接sum(b)

要叠加行或列用sum(b,1)或sum(b,2) 二维数组要叠加所有元素用sum(b(:)) 五:语句

1: if——else语句 if 条件

运行语句1; 运行语句2; 运行语句n; else//可以省略 运行语句1; 运行语句2; 运行语句n;

end

也可以 if 。。 else if 。。 else 。。 end end

2: for循环语句

for 数列//多用0:n-1去执行n次;或应用length取长度 运行语句1; 运行语句2; 运行语句n; End

3:while 逻辑 语句1; 语句2; End

六:信号的产生

1:0矩阵的创立:zeros(m行,n列)//行是一的矩阵也就是一个序列 2:1矩阵的创立:ones(m行,n列)//行是一的矩阵也就是一个序列

应用:单位抽样序列:[1 zeros(1,n-1)] ====[1 0 0 0 0 0 0 0...](一共n个数字) 单位阶跃序列:ones(1,n)==[1 1 1 1 1 1 1 ??.] 七:编写*.m文件,自定义的函数 过程: 书写方法:

定义为*.m文件。

多要利用循环,分支语句。 运行方法:

进入含有自定义函数的*.m文件。

在命令行里键入:m文件的名字,回车。 Eg: clear all; close all; clc; cd lib

函数: 书写方法:

和过程相似,但要有:function 返回值=函数名(参数1,参数2,参数3。。。。) 主意:可以不定义返回值,参数n。m文件名=函数名 局部变量:

全局变量:利用global命令 Eg:

global num; num=1000;

运行方法:

与一般的函数一样,返回值,参数n在函数外部定义。 Eg: function re=\w=2*pi*f; t=0:n-1; re=sin(w*t); plot(re);

多值返回[ra,rb,rc,..]=???

或者在m编译器中debug>>run(调试程序)

matlab中inline函数

在matlab命令窗口、程序或函数中创建局部函数时,可用inline。优点是不必将其储存为一个单独文件。在运用中有几点限制:不能调用另一个inline函数,只能由一个matlab表达式组成,并且只能返回一个变量---显然不允许[u,v]这种形式。因而,任何要求逻辑运算或乘法运算以求得最终结果的场合,都不能应用inline。除了这些限制,在许多情况下使用该函数非常方便。

Inline函数的一般形式为:

FunctionName=inline(‘任何有效的matlab表达式’, ‘p1’,’p2’ ,?.) ,其中‘p1’,’p2’ ,?是出现在表达式中的所有变量的名字。 如:(求解F(x)=x^2*cos(a*x)-b ,a,b是标量;x是向量 )

在命令窗口输入:

Fofx=inline(‘x .^2*cos(a*x)-b’ , ‘x’,’a’,’b’);

g= Fofx([pi/3 pi/3.5],4,1)

系统输出为:g=-1.5483 -1.7259

*****************************************************

f函数如何理解

f函数的最通常的应用是以下形式:

f('functionname',parameter),举个简单的例子:

比如要计算sin(2),当然可以直接用命令y=sin(2);利用f,还可以这样来做: y=f('sin',2);另外这里的函数名字还可以是一个函数句柄,即h=@sin; y=f(h,2);或者直接写成y=f(@sin,2);

Matlab函数句柄, 匿名函数

变量不仅可以用来表示数值(如: 1, 0.2, -5), 用来表示字符串(如: 't', 'casino'), 也可以用来表示函数哦. 当然, 你也看到了前面我们提到的函数都是一个一个的文件, 直接塞到一个变量里面似乎太大, 不过我们可以'提纲挈领', 抓住函数的handle(句柄), 就可以.

将函数句柄赋值给变量要用到@符号, 语法: 变量名=@函数名, 此处地函数名可以是当前Matlab中可以使用的任意函数 例如: mysin=@sin, 此后mysin就和sin同样地使用, mysin(pi)和sin(pi)的含义相同.

匿名函数

这是函数句柄的一种高级用法, 这样产生的函数句柄变量不指向特定的函数, 而是一个函数表达式. 其语法:

变量名=@(输入参数列表)运算表达式

例如, 前面那个计算变量平方的函数可以简单地写为这个匿名函数:

mysqr1=@(x)x.*x

之后, 执行mysqr1(变量名), 即可计算该变量的平方, 注意, mysqr1属性是函数句柄变量, 而不是这个表达式; 还有要注意这个表达式不需要用单引号括起来.

inline 函数

inline函数不是函数句柄, 是另外一种类型, 它也可以用变量来表示函数, 用法也和一般函数, 函数句柄是一样的. 定义inline函数的语法:

变量名=inline('函数表达式', '变量名1','变量名2', ... ,'变量名n')

当然啦, 如果是常见变量名, 如x, y, 等, 后面那个变量名列表可以省略(不建议为了偷懒这么做, 因为容易引起混乱). inline语句得到的变量类型比较特别, 是'inline object'.

举例依旧是计算变量的平方, 用inline的方法可以这么做:

mysqr2=inline('x.*x','x');

定义完mysqr2后, 可以用: mysqr2(3), 计算3的平方.

当然, 函数句柄, 匿名函数, inline函数还有很多比较高深的内容, 这里就不提了, 今后如果我写那些学科的notes时遇上了再补充.

inline 函数

inline函数不是函数句柄, 是另外一种类型, 它也可以用变量来表示函数, 用法也和一般函数, 函数句柄是一样的. 定义inline函数的语法:

变量名=inline('函数表达式', '变量名1','变量名2', ... ,'变量名n')

当然啦, 如果是常见变量名, 如x, y, 等, 后面那个变量名列表可以省略(不建议为了偷懒这么做, 因为容易引起混乱). inline语句得到的变量类型比较特别, 是'inline object'.

举例依旧是计算变量的平方, 用inline的方法可以这么做:

mysqr2=inline('x.*x','x');

定义完mysqr2后, 可以用: mysqr2(3), 计算3的平方.

当然, 函数句柄, 匿名函数, inline函数还有很多比较高深的内容, 这里就不提了, 今后如果我写那些学科的notes时遇上了再补充.

本文来源:https://www.bwwdw.com/article/xwcr.html

Top