文档库 最新最全的文档下载
当前位置:文档库 › matlab使用技巧整理

matlab使用技巧整理

matlab使用技巧整理
matlab使用技巧整理

Title中引入变量 (1)

MATLAB简单图像读写 (2)

坐标控制 (5)

显示特殊字符 (5)

matlab导出数据(fprintf,dlmwrite,xlswrite) (6)

MATLAB取整函数的应用 (11)

matlab里有关于集合运算的函数: (12)

线型:颜色线型 (13)

用matlab绘制箭头1 (14)

数组逆序 (16)

模运算 (17)

删除数组中一个或多个元素 (18)

matlab中fopen函数在指定文件打开的实例如下: (18)

matlab图片保存为eps格式后中文显示乱码 (20)

Matlab中digits()与vpa() (22)

Title中引入变量

问题描述:我现在i=8,希望在title命令中引用i,以便在图形上能显示出i 的值8

方法:title(['figure ',num2str(i)]); 注意:有两点,一是title中引入中括号[];二是用到函数num2str(i)

推广:在title中引入多个变量,如下:

title(['频率f=401.5MHz,障碍物在距离发射天线',num2str(zaw_location),'m处,障碍物高度',num2str(R),'m']);

例子:

clear

clc

theta= 0:pi/20:2*pi;

p=1000;

e1=0;

r1=p./(1-e1.*cos(theta));

l1=min(r1);

subplot(1,3,1);

polar(theta,r1)

title(['1.the minnus distance is ',num2str(l1)])

e2=0.25;

r2=p./(1-e2.*cos(theta));

l2=min(r2);

subplot(1,3,2);

polar(theta,r2)

title(['2.the minnus distance is ',num2str(l2)])

e3=0.5;

r3=p./(1-e3.*cos(theta));

l3=min(r3);

subplot(1,3,3);

polar(theta,r3)

title(['3.the minnus distance is ',num2str(l3)])

MATLAB简单图像读写

1.读入图片:imread('filename')

如:f=imread('chest.jpg');

注意:1.括号内为单引号,注意与C区分

2.命令行最后为冒号,否则会吃苦头的哦,呵呵

3.保证图片chest.jpg在当前目录下,否则要给出图片的完全路径

如:f=imread('D:/myimages/chest.jpg');

4.filename后要跟图片格式后缀。

2.显示图片:imshow(f,[ ])

注:上述为推荐使用方式,即使用imshow(f),也可以,二者之间的区别可以从下面两幅图的显示上看出

imshow(f)imshow(f,[ ])

第一幅图片的灰度级较小,而,通过imshow(f,[ ])后它的灰度级范围得到拉伸。

imshow(f,[ ])是imshow(f,[ min high])的特例,即将f 的实际最小对应到min,而其最大灰度级对应到max 。

而对于f 中小于等于min 的灰度级显示为黑色,大于等于max 的灰度级显示为白色。

3.写入图片:imwrite(f,'filename')

其中对于JEPG 格式的图片有

imwrite(f,'filename.jpg','quality',q) 0<=q<=100

下面看一个简单的小程序:

for q=0:5:100

filename=sprintf('series_%3d.jpg',q);

imwrite(f,filename,'quality',q);

end

此程序写入quality=0,5,10.......共21种quality 的图片,下面看下quality 分别为0、5、15、25、50以及原图的显示

其中对于TIF格式的图片有:

imwrite(g,'filename.tif','compression','parameter','resolution',[colres row res])

注:compression:压缩比率

parameter:none/packbits/ccitt

resolution:分辨率

例如:原始图片为:jpg格式,200dpi,450*450

由450/200=2.25,知宽*高=2.25*2.25,要使其变为宽*高=1.5*1.5,不损失pixels,知compression为none

resolustion=200*2.25/1.5=300

于是:imwrite(f,'jinpeng.tif','compression','none','resolution',[300 300])

也可以如下显示:

res=round(200*2.5/1.5);

imwrite(f,'jinpeng.tif','compression','none','resolution',res);

结果如下图所示:

********因blog系统不支持.tif格式,故无法上传。。。。

注:imread支持图像格式有.tif/.jpg/.gif/.bmp/.png/.xwd,其中对于imwrite()不支持.gif格式。

坐标控制

axis 'off';%隐藏坐标轴

axis 'equal';%将各坐标轴的刻度设置成相同

set(gca,'YTickLabel',''); %隐藏Y轴刻度

set(gca,'XTickLabel',''); %隐藏X轴刻度

显示特殊字符

在matlab的label、text、title里面经常要显示特殊字符,matlab的默认选项是支持tex语法的,利用tex的语法就可以实现特殊字符的显示。下面是一些常用语法,比如想要显示α,只需写上\alpha(注意这个斜线不能丢呀!)。

----------------数学符号-----------------

± \pm 上标 a^b

× \times 下标 a_b

÷ \div

≥ \geq

≤ \leq

matlab导出数据(fprintf,dlmwrite,xlswrite)

1.用fprintf 函数写数据到txt,xls

Example:

x = 0:.1:1;

y = [x; exp(x)];

fid = fopen('exp.txt', 'w');

fprintf(fid, '%6.2f %12.8f\n', y);

fclose(fid)

tip:执行上述代码执行,肯定不会换行的,换行的问题试一下下面的代码

x = 0:.1:1;

y = [x; exp(x)];

fid = fopen('exp.txt', 'wt');

fprintf(fid, '%6.2f %12.8f\n', y);

fclose(fid);

这次就没有问题了,我们要注意fopne的参数wt 而不是 w,这是matlab的在线帮助的东东

fid = fopen(filename, permission_tmode) on Windows systems, opens the file in text

mode instead of binary mode (the default). The permission_tmode argument consists

of any of the specifiers shown in the Permission Specifiers table above, followed

by the letter t, for example 'rt' or 'wt+. On UNIX?systems, text and binary mode

are the same. (UNIX is a registered trademark of The

Open Group in the United States and other countries).

就是有两种读取模式binary or text. When choosing the binary model,No characters are

given special treatment. 所以我们选择要注明text模式。

2. dlmwrite :将一个矩阵写到由分隔符分割的文件中。

在保存整数到文件时使用save存为ascii文件时,常常是文件里都是实型格式的数据(有小数点,和后面很多的0,看着很不方便)。于是要保存此类数据时,我们可以使用此dlmwrite命令。

使用方法:

dlmwrite('filename', M)

使用默认分隔符“,”将矩阵M写入文本文件filename中;

dlmwrite('filename', M, 'D')

使用分隔符D分割数据,“\t”表示tab分割,“,”为默认分割符;

dlmwrite('filename', M, 'D', R, C)

从矩阵M的第R行、第C列开始,作为要写矩阵块的左上角,将数据用D分割写入文件。

其他用法有:

dlmwrite('filename', M, 'attrib1', value1, 'attrib2', value2, ...) dlmwrite('filename', M, '-append')

dlmwrite('filename', M, '-append', attribute-value list)

例如:

a = [1 2 3; 4 5 6; 7 8 9];

dlmwrite('test.txt', a);

则test.txt中的内容为:

1,2,3

4,5,6

7,8,9

而使用save

a = [1 2 3; 4 5 6; 7 8 9];

save 'tst.txt' a -ascii;文本文件里的内容为:

1.0000000e+000

2.0000000e+000

3.0000000e+000

4.0000000e+000

5.0000000e+000

6.0000000e+000

7.0000000e+000 8.0000000e+000 9.0000000e+000

3.xlswrite 写入excel

4.fprintf和dlmwrite区别

MATLAB在图像处理中的应用,实际是对图像矩阵的操做运算,MATLAB 在图像处理中的常用的命令有:

imread(): 从图像文件夹中读取图像的函数;

imwrite(): 输出图像的函数;

imshow(), image(): 图像显示于屏幕的函数;

imcrop(): 对图像进行裁剪的函数;;

imresize(): 实现对图像的插值缩放的函数;

imrotate(): 用实现对图像的旋转。

im2double(),double(): 将图像数组转化为double类型;

im2uint8(),uint8(): 将图像数组转化为uint8类型;

im2uint16(),uint16(): 将图像数组转化为uint16类型;

关于上述的命令使用方法可以参考一些MATLAB方面的书籍或者用MATLAB自带的帮助(help or doc)命令.

如我想知道dwt2()命令的使用方法可以执行下面的命令

>> help dwt2 或 >>doc dwt2

系统就会告诉你它的使用要求和方法,如果系统说找不到对应的帮助文

件,那就可能是你装的MATLAB里面没有这个命令,那很可能这个命令就不能使用.

在图像数组的输出到文件的操作上,我发现fprintf比dlmwrite明显快很多,但这两个输出的数据格式有些差别,见下面操作:

>> a=[1 2 3;4 5 6;7 8 9]

a =

1 2 3

4 5 6

7 8 9

>>fid = fopen('exp.txt','w');

fprintf(fid,'%2.0f\n',a);

fclose(fid);

>> type exp.txt

1

4

7

2

5

8

3

6

9

fprintf输出是一列一列的从左到右输出。

>> dlmwrite('eg2.dat',a,'\n');

>> type eg2.dat

1

2

3

4

5

6

7

8

9

dlmwrite输出是一行一行的从上到下输出。

下面是一个比较简单的图像处理程序:

clear;%清除当前工作区所有变量

data=imread('E:\2D前处理\eg1.bmp');%从图像文件夹中读取图像eg1.bmp

data=double(data);%将图像数组data转化为double类型

[x,y]=size(data);%求数组大小,x是data数组有多少行,y是data数组有多少列

data1=imresize(data,[x,y*2/1.732]);%实现对图像的左右插值放大2/1.732倍

[x,y]=size(data1);%%求放大后图像数组大小

fid = fopen('E:\2D前处理\Particle\test.dat', 'wt');%打开图像数组的将要输出到文件

fprintf(fid, '%2.0f\t%2.0f\n', x, y);%输出x,y值

fprintf(fid, '%2.0f\n', data1);%输出图像数组数据

fclose(fid);%关闭文件指针

MATLAB取整函数的应用

B = floor(A) rounds the elements of A to the nearest integers less than or equal to A. For complex A, the imaginary and real parts are rounded independently. (floor:朝负无穷方向舍入)

B = ceil(A) rounds the elements of A to the nearest integers greater than or equal to A. For complex A, the imaginary and real parts are rounded independently. (ceil:朝正无穷方向舍入)

B = fix(A)rounds the elements of A toward zero, resulting in an array of integers. For complex A, the imaginary and real parts are rounded independently. (fix:朝零方向舍入)

B = round(A) rounds the elements of X to the nearest integers. For complex X, the imaginary and real parts are rounded independently. (round:四舍五入) Example:a = [-1.9, -0.2, 3.4, 5.6, 7.0, 2.4+3.6i]

a =

Columns 1 through 4

-1.9000 -0.2000 3.4000 5.6000

Columns 5 through 6

7.0000 2.4000 + 3.6000i

floor(a)

ans =

Columns 1 through 4

-2.0000 -1.0000 3.0000 5.0000

Columns 5 through 6

7.0000 2.0000 + 3.0000i

ceil(a)

ans =

Columns 1 through 4

-1.0000 0 4.0000 6.0000

Columns 5 through 6

7.0000 3.0000 + 4.0000i

fix(a)

ans =

Columns 1 through 4

-1.0000 0 3.0000 5.0000

Columns 5 through 6

7.0000 2.0000 + 3.0000i

round(a)

ans =

Columns 1 through 4

-2.0000 0 3.0000 6.0000

Columns 5 through 6

7.0000 2.0000 + 4.0000i

matlab里有关于集合运算的函数:

intersect:集合交集

ismember :是否集合中元素

issorted:判断集合是否排序 (相关函数,sort:排序)

setdiff :集合差集

setxor :集合异或(不在交集中的元素)

union :两个集合的并

unique :返回向量作为一个集合所有元素(去掉相同元素)

举例如下:

>> clear;

>> a=0;

>> A=[1 2 3 4 5];

>> B=[0 1 5 7 2];

>> C=union(A,B)%求集合A与B的并集

C =

0 1 2 3 4 5 7

>> D=intersect(A, B)%求集合A与B的交集

D =1 2 5

>> E = setdiff(A, B)%求集合差A-B

E =

3 4

>> F = setxor(A, B)%求A与B交集的补集

F =

0 3 4 7

>> ismember(a,A)%判断a是否属于A

ans =

>> issorted(A)

ans =

1

matlab中使用ismember判断一个集合是否为另一个的子集。返回一个逻辑矩阵,也可以返回index

help ismember

也可以使用intersect来判断,intersect(a,b)返回a和b的交集元素。

>> a=1:5,b=[1,3]

a =

1 2 3 4 5

b =

1 3

>> ismember(b,a)

ans =

1 1

>> all(ismember(b,a))

ans =

1

>> intersect(a,b)

ans =

1 3

>> isequal(sort(b),intersect(a,b))

ans =

1

线型:颜色线型

y 黄色 . 圆点线 v 向下箭头

g 绿色-. 组合 > 向右箭头

b 蓝色+ 点为加号形 < 向左箭头

m 红紫色 o 空心圆形 p 五角星形

c 蓝紫色 * 星号 h 六角星形

w 白色 . 实心小点hold on 添加图形

r 红色x 叉号形状 grid on 添加网格

k 黑色s 方形- 实线

d 菱形-- 虚线 ^ 向上箭头

b blue . point - solid

g green o circle : dotted

r red x x-mark -. dashdot

c cyan + plus -- dashed

m magenta * star (none) no line

y yellow s square

k black d diamond

w white v triangle (down)

^ triangle (up)

< triangle (left)

> triangle (right)

p pentagram

h hexagram

用matlab绘制箭头1

用m a t l a b绘制箭头

1.q ui ve r和qui v er3命令

这两个命令适合画关于“场”中向量的图,不适合于画单个剪头,而且放大之后,剪头不是很好看

如:

[X,Y]=m e s h g r i d(-2:.2:2);

Z=X.*e x p(-0.5.*X.^2- Y.^2);

[D X,D Y]=g r a d i e n t(Z,.2,.2);

c o n t o u r(X,Y,Z)

h o l d o n

q u i v e r(X,Y,D X,D Y)

c o l o r m a p h s v

h o l d o f f

2.t e x t命令中的\l e f t a r r o w和\r i g h t a r r o w.可用于对图形的标注,但作

用仅限于此,不好控制。例:

p l o t(0:p i/20:2*p i,s i n(0:p i/20:2*p i))

t e x t(p i,0,'\l e f t a r r o w s i n(\p i)','F o n t S i z e',18)

3.A n n o t a t i o n,可绘出比较漂亮的箭头,但似乎只能画出二维的箭头,向量长度小于1,并且随对图形放大和平移时剪头不会相应地变化。例如

f i

g u r e;

h o l d o n;a x

i s e q u a l;

a n n o t a t i o n('t e x t a r r o w',[0.20.3],[0.50.6]);

a n n o t a t i o n('d o u

b l e a r r o w',[0.50.3],[0.20.6]);

网上的一些代码,可画出漂亮的剪头(a n n o t a t i o n('a r r o w',[0.20.8],[0.1

0.1],'L i n e S t y l e','-','c o l o r',[100]);

a n n o t a t i o n('a r r o w',[0.20.8],[0.30.3],'L i n e S t y l e','-','c o l o r',[10

0],'H e a d S t y l e','p l a i n');

a n n o t a t i o n('a r r o w',[0.20.8],[0.50.5],'L i n e S t y l e','-','c o l o r',[10

0],'H e a d S t y l e','c b a c k3');

a n n o t a t i o n('d o u

b l e a r r o w',[0.20.8],[0.70.7],'L i n e S t y l e','-','

c o l o r',[10

0],'H e a d S t y l e','c b a c k3');)

4.若要绘制三维剪头且对图形放大和旋转时剪头也随之变化,可自己编程解决。例:

P1=[0,0,0];P2=[0,0,2];

f i

g u r e;

h o l d o n;a x

i s e q u a l;

f o r k=1:13

x(k)=0.05*c o s(p i/180*k*30);

y(k)=0.05*s i n(p i/180*k*30);

z(k)=1.8;

p l o t3([P2(1),x(k)],[P2(2),y(k)],[P2(3),z(k)])

e n d

p l o t3([P1(1),P2(1)],[P1(2),P2(2)],[P1(3),P2(3)]);

p l o t3(x,y,z);

本例只绘出了一个方向的箭头,若要绘任意向量的剪头,可采用类似的思路,本例仅供参考

数组逆序

Flipud(a); %按行逆序

Fliplr(a); %按列逆序

模运算

通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:

当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。

这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor 函数向无穷小方向舍入)。

rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)

两个异号整数取模取值规律(当是小数时也是这个运算规律,这一点好像与C 语言的不太一样)

先将两个整数看作是正数,再作除法运算

①能整除时,其值为0

②不能整除时,其值=除数×(整商+1)-被除数

例:mod(36,-10)=-4

即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。

例:mod(9,1.2)=0.6;

例:

>> mod(5,2)

ans =1 %“除数”是正,“余数”就是正

>> mod(-5,2)

ans =1

>> mod(5,-2)

ans =-1 %“除数”是负,“余数…就是负

>> mod(-5,-2)

ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同

>> rem(5,2)

ans =1 %“被除数”是正,“余数”就是正

>> rem(5,-2);

ans =1

>> rem(-5,2)

ans =-1 %“被除数”是负,“余数”就是负

>> rem(-5,-2)

ans =-1

删除数组中一个或多个元素

将需要删除元素的位置赋值为空即可,例:

>> C =[1 2 3 4 5 6 7 8]

C =

1 2 3 4 5 6 7 8

>> C(2:4) = []

C =

1 5 6 7 8

>> syms a b c d e f

>> C=[a b c d e f]

C =

[ a, b, c, d, e, f]

>> C(2:4) = []

C =

[ a, e, f]

matlab中fopen函数在指定文件打开的实例如下:

*1)“fopen”打开文件,赋予文件代号。

语法1:FID= FOPEN(filename,permission)

用指定的方式打开文件

FID=+N(N是正整数):表示文件打开成功,文件代号是N.

FID=-1 : 表示文件打开不成功。

FID在此次文件关闭前总是有效的。

如果以读方式打开,matlab首先搜索工作目录,其次搜索matlab的其他目录,“permission”是打开方式参数。

打开方式参数由以下字符串确定:

r 读出

w 写入(文件若不存在,自动创建)

a 后续写入(文件若不存在,自动创建)

r+ 读出和写入(文件应已存在)

w+ 重新刷新写入,(文件若不存在,自动创建)

a+ 后续写入(文件若不存在,自动创建))

w 重新写入,但不自动刷新

a 后续写入,但不自动刷新

文件的存储格式:文件打开的默认方式是:二进制。以文本方式打开,可以在方式参

数“permission”中加入“t”文件将,如“rt”,“wt+”

matlab图片保存为eps格式后中文显示乱码主题:图形工具及eps图形的生成

目录:

1.数据图工具

2. 生成eps 图形

2.1 光栅图制作软件eps 导出

2.2 矢量图制作软件eps 导出

2.3 eps 虚拟打印

2.4 剪裁eps, PDF

TeXer不外乎两种人,一种是科学家和学者,一种是未来的科学家和学者(广大

的硕士和博士生)。我带的本科生也使用TeX,不是我要求,而是自愿的。这些

人经常和图形打交道。这里我谈谈科技图形的制作。

图形有3类,照片、示意图和数据图。照片只能是点阵图,而示意图和数据图最好

是矢量图。矢量图的好处是,即使把你文章中的图放大成户外广告版大小,线条

仍然分明,曲线依旧优美。

1. 数据图工具

常用的数据图软件很多,较早的有Graph Tools, Harvard Graphics等。现流行的

有Origin和TecPlot等。

作为一般用户,Origin很适合,如果你是搞计算流体力学(CFD)的,TecPlot就比

较好了。

Origin 一般采用交互式操作,界面非常友好,不学也会做出漂亮的图形。Origi

n 6.1-7.0 的eps导出功能大大增强。Origin导出的eps图形体积很小,但不能正

确导出有汉字的图形。

TecPlot 8.0的特点是适合生成流线、速度、温度(以及其它所有类似的变量)

MATLAB中FFT的使用方法

MATLAB中FFT的使用方法 一.调用方法 X=FFT(x); X=FFT(x,N); x=IFFT(X); x=IFFT(X,N) 用MATLAB进行谱分析时注意: (1)函数FFT返回值的数据结构具有对称性。 例: N=8; n=0:N-1; xn=[4 3 2 6 7 8 9 0]; Xk=fft(xn) →Xk = 39.0000 -10.7782 + 6.2929i 0 - 5.0000i 4.7782 - 7.7071i 5.0000 4.7782 + 7.7071i 0 + 5.0000i -10.7782 - 6.2929i Xk与xn的维数相同,共有8个元素。Xk的第一个数对应于直流分量,即频率值为0。 (2)做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。在IFFT时已经做了处理。要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。 二.FFT应用举例 例1:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)。采样频率fs=100Hz,分别绘制N=128、1024点幅频图。 clf; fs=100;N=128; %采样频率和数据点数

n=0:N-1;t=n/fs; %时间序列 x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号 y=fft(x,N); %对信号进行快速Fourier变换 mag=abs(y); %求得Fourier变换后的振幅 f=n*fs/N; %频率序列 subplot(2,2,1),plot(f,mag); %绘出随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=128');grid on; subplot(2,2,2),plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅xlabel('频率/Hz'); ylabel('振幅');title('N=128');grid on; %对信号采样数据为1024点的处理 fs=100;N=1024;n=0:N-1;t=n/fs; x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号 y=fft(x,N); %对信号进行快速Fourier变换 mag=abs(y); %求取Fourier变换的振幅 f=n*fs/N; subplot(2,2,3),plot(f,mag); %绘出随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=1024');grid on; subplot(2,2,4) plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=1024');grid on; 运行结果:

matlab信号与系统实验报告

实验一 基本信号的产生与运算 一、 实验目的 学习使用MATLAB 产生基本信号、绘制信号波形、实现信号的基本运算。 二、 实验原理 MATLAB 提供了许多函数用于产生常用的基本信号:如阶跃信号、脉冲信号、指数信号、正弦信号和周期方波等等。这些信号是信号处理的基础。 1、 利用MATLAB 产生下列连续信号并作图。 (1)51),1(2)(<<---=t t u t x (2)300),3 2sin()(3.0<<=-t t e t x t (3)1.01.0,3000cos 100cos )(<<-+=t t t t x (4)2000),8.0cos()1.0cos()(<<=t t t t x ππ 答:(1)、 >> t=-1:0.02:5; >> x=(t>1); >> plot(t,-2*x); >> axis([-1,5,-3,1]); >> title('杨婕婕 朱艺星'); >> xlabel('x(t)=-2u(t-1)'); (2)、 >> t=0:0.02:30; >> x=exp(-0.3*t).*sin(2/3*t); >> plot(t,x);

>> title('杨婕婕朱艺星'); >> xlabel('x(t)=exp(-0.3*t).*sin(2/3*t)'); 因为原函数在t=15后x(t)取值接近于零,所以将横坐标改成0到15,看得更清晰 axis([0,15,-0.2,0.6]); (3)>> t=-0.1:0.01:0.1;x=cos(100*t)+cos(3000*t);plot(t,x); >> title('杨婕婕朱艺星'); >>xlabel('x=cos(100*t)+cos(3000*t)'); 因为t的间隔取太大,以至于函数不够准确,缩小t的间隔: t=-0.1:0.002:0.2;x=cos(100*t)+cos(3000*t); plot(t,x);title('杨婕婕') >> t=-0.1:0.0001:0.1; x=cos(100*t)+cos(3000*t); >> plot(t,x);title('杨婕婕朱艺星'); >> xlabel('x=cos(100*t)+cos(3000*t)');

matlab基础知识

第2章基础知识 本章着重介绍MATLAB的一些基础知识,包括数据类型、基本矩阵操作、运算符和字符串处理函数。本章是MATLAB编程的基础。 2.1 数据类型 MATLAB中定义了很多种数据类型,包括字符、数值、单元、结构、java类、函数句柄等类型,用户还可以自己定义数据类型。 在MATLAB中有15种基本数据类型,每种基本数据类型均以数组/矩阵的形式出现,该矩阵可以是最小的0*0矩阵到任意大小的n维矩阵。 1.数值类型 数值类型包含整数、浮点数和复数3种类型。另外MATLAB还定义了Inf和NaN两个特殊数值。 (1)整数类型 MATLAB支持1、2、4和8字节的有符号整数和无符号整数。这8种数据类型的名称、表示范围、转换函数如表2-1所示,其中转换函数可以把其它数据类型的数值强制转换为对应的整数类型。尽可能使用字节少的数据类型,这样可以节约存储空间和提高运算速度。 表2-1 整数类型 名称范围转换函数名称范围转换函数 有符号1字节整数int8() 无符号1字节整数uint8() 有符号2字节整数int16() 无符号2字节整数uint16() 有符号4字节整数int32() 无符号4字节整数uint32() 有符号8字节整数int64() 无符号8字节整数uint64() (2)浮点数类型 MATLAB有单精度和双精度两种浮点数,其中双精度浮点数为MATLAB默认的数据类型。这2种数据类型的名称、存储空间、表示范围和转换函数如表2-2所示。

表2-2 浮点数类型 名称存储空间表示范围转换函数 单精度浮点数4字节single() 双精度浮点数8字节double() (3)复数类型 复数包含实部和虚部。在MATLAB中可以用i或j来表示虚部。 例如:在命令窗口中用赋值语句产生复数5+10i,代码如下: A=5+10i 例如:在命令窗口用函数complex()产生复数5+10i,具体代码如下: X=5; Y=10; z=complex(x,y) (4)Inf和NaN 在MATLAB中用Inf和-Inf分别表示正无穷大和负无穷大。除法运算中除数为0或者运算结果溢出都会导致inf或-inf的运行结果。 在MATLAB中用NaN(not a number)来表示一个既不是实数也不是复数的数值。类似0/0、inf/inf等运算产生的结果均为NaN。 2.逻辑类型 在MATLAB中逻辑类型包括true和false,分别由1和0表示。在MATLAB中用函数logical()将任何非零的数值转换为true(即1),将数值0转换为false(即0)。 3.字符和字符串类型 在MATLAB中,数据类型(char)表示一个字符。一个char类型的1*n数组称为字符串string。用单引号对表示字符串。 例如:str=‘I am a great person’

信号(MATLAB)实验指导书

《信号与系统》实验指导书 张建奇骆崇编写 浙江工业大学之江学院信息工程分院 2012年2月

目录 实验一MATLAB的基本使用 (1) 一、实验目的 (1) 二、实验原理 (1) 三、实验内容与要求 (8) 四、实验报告 (9) 实验二时域波形的MATLAB实现 (10) 一、实验目的 (10) 二、预习要求 (10) 三、实验原理 (10) 四、实验内容与要求 (18) 五、实验报告 (19) 实验三用MATLAB对系统时域分析 (20) 一、实验目的 (20) 二、预习要求 (20) 三、实验原理 (20) 四、实验内容与要求 (29)

实验一MATLAB的基本使用 一、实验目的 1、了解和掌握MATLAB的基本操作 2、了解MATLAB的库函数 3、会用MATLAB进行简单的操作。 二、实验原理 1、界面操作 MATLAB是“MATrix LABoratory”的缩写(矩阵实验室),它是由美国Mathworks公司于1984年正式推出的一种科学计算软件,由于其强大的功能,在欧美的一些大学里MATLAB已经成为许多诸如数字信号处理、自动控制理论等高级教程的主要工具软件,同时也成为理工科学生,必须掌握的一项基本技能。 当需要运行程序时,只需选择桌面上(或开始)中的MATLAB6.5应用程序图标即可 通常情况下,MATLAB的工作环境主要由一下几个窗口组成: 命令窗口(Command Window)

工作区间浏览器(Workspace) 历史命令窗口(Command History) 图形窗口(Figure) 文本编辑窗口(Editor) 当前路径窗口(Current Directory) MATLAB的命令窗与命令操作 当用户使用命令窗口进行工作时,在命令窗口中可以直接输入相应的命令,系统将自动显示信息。 例如在命令输入提示符“>>”后输入指令: >>t=[1,2,3;4,5,6;7,8,9]; 按回车键(Enter)后,系统即可完成对变量t的赋值。 MATALB提供了非常方便的在线帮助命令(help),它可提供各个函数的用法指南,包括格式、参数说明、注意事项及相关函数等内容。 2、图形窗 MATLAB图形窗(Figure)主要用于显示用户所绘制的图形。 通常,只要执行了任意一种绘图命令,图形窗就会自动产生。

实验1 用MATLAB进行信号频谱分析(推荐文档)

实验1 用MATLAB 进行信号频谱分析 一、实验目的 ㈠ 初步掌握MATLAB 产生常用离散时间信号的编程方法。 ㈡ 学习编写简单的FFT 算法程序,对离散信号进行幅频谱分析。 ㈢ 观察离散时间信号频谱的特点。 二、实验原理 ㈠ 常用的离散时间信号 在 MATLAB 语言主要是研究离散信号的。常用的离散信号有: 1.单位取样序列 ???≠==000 1)(n n n δ 2.单位阶跃序列 ?? ?<≥=0 01 )(n n n u 3.实指数序列 R a n a n x n ∈?=;)( 4.复指数序列 n e n x n j ?=+)(0)(ωσ 5.正(余)弦序列 )c o s ()(0θω+=n n x n ? 6.周期序列 n N n x n x ?+=)()( ㈡ 离散信号的产生 离散信号的图形显示使用stem 指令。 在 MATLAB 中的信号处理工具箱中,主要提供的信号是离散信号。

由于MATLAB 对下标的约定为从1开始递增,例如x=[5,4,3,2,1,0],表示x(1)=5,x(2)=4,X(3)=3… 因此要表示一个下标不由1开始的数组x(n),一般应采用两个矢量,如 n=[-3,-2,-1,0,l ,2,3,4,5]; x=[1,-l ,3,2,0,4,5,2,1]; 这表示了一个含9个采样点的矢量:X(n)={x(-3),x(-2),x(-1),x(0),x(1),x(2),x(3),x(4),x(5)}。 1.单位取样序列 ?? ?≠==δ0 001)(n n n 这一函数实现的方法有二: 方法一:可利用MATLAB 的zeros 函数。 x=zeros(1,N); %建立一个一行N 列的全零数组 x(1)=1; %对X (1)赋1 方法二:可借助于关系操作符实现 n=1:N; x=[n==1]; %n 等于1时逻辑关系式结果为真,x=1;n 不等于1时为假,x=0 如要产生 ?????≤<<=≤≤=-δ2 0210 100)(10)(n n n n n n n n n n n n 则可采用MATLAB 实现: n=n1:n2; x=[(n-n0)==0];%n=n0时逻辑关系式结果为真,x=1;n ≠n0时为

(整理)matlab16常用计算方法.

常用计算方法 1.超越方程的求解 一超越方程为 x (2ln x – 3) -100 = 0 求超越方程的解。 [算法]方法一:用迭代算法。将方程改为 01002ln()3 x x =- 其中x 0是一个初始值,由此计算终值x 。取最大误差为e = 10-4,当| x - x 0| > e 时,就用x 的值换成x 0的值,重新进行计算;否则| x - x 0| < e 为止。 [程序]P1_1abs.m 如下。 %超越方程的迭代算法 clear %清除变量 x0=30; %初始值 xx=[]; %空向量 while 1 %无限循环 x=100/(2*log(x0)-3); %迭代运算 xx=[xx,x]; %连接结果 if length(xx)>1000,break ,end %如果项数太多则退出循环(暗示发散) if abs(x0-x)<1e-4,break ,end %当精度足够高时退出循环 x0=x; %替换初值 end %结束循环 figure %创建图形窗口 plot(xx,'.-','LineWidth',2,'MarkerSize',12)%画迭代线'.-'表示每个点用.来表示,再用线连接 grid on %加网格 fs=16; %字体大小 title('超越方程的迭代折线','fontsize',fs)%标题 xlabel('\itn','fontsize',fs) %x 标签 ylabel('\itx','fontsize',fs) %y 标签 text(length(xx),xx(end),num2str(xx(end)),'fontsize',fs)%显示结果 [图示]用下标作为自变量画迭代的折线。如P0_20_1图所示,当最大误差为10-4时,需要迭代19次才能达到精度,超越方程的解为27.539。 [算法]方法二:用求零函数和求解函数。将方程改为函数 100()2ln()3f x x x =-- MATLAB 求零函数为fzero ,fzero 函数的格式之一是 x = fzero(f,x0) 其中,f 表示求解的函数文件,x0是估计值。fzero 函数的格式之二是 x = fzero(f,[x1,x2])

matlab信号与系统实验报告

实验一 基本信号的产生与运算 一、 实验目的 学习使用MATLAB 产生基本信号、绘制信号波形、实现信号的基本运算。 二、 实验原理 MATLAB 提供了许多函数用于产生常用的基本信号:如阶跃信号、脉冲信号、指数信号、正弦信号和周期方波等等。这些信号是信号处理的基础。 1、 利用MATLAB 产生下列连续信号并作图。 (1)51),1(2)(<<---=t t u t x (2)300),3 2 sin()(3.0<<=-t t e t x t (3)1.01.0,3000cos 100cos )(<<-+=t t t t x (4)2000),8.0cos()1.0cos()(<<=t t t t x ππ 答:(1)、 >> t=-1:0.02:5; >> x=(t>1); >> plot(t,-2*x); >> axis([-1,5,-3,1]); >> title('杨婕婕 朱艺星'); >> xlabel('x(t)=-2u(t-1)');

(2)、 >> t=0:0.02:30; >> x=exp(-0.3*t).*sin(2/3*t); >> plot(t,x); >> title('杨婕婕朱艺星'); >> xlabel('x(t)=exp(-0.3*t).*sin(2/3*t)');

因为原函数在t=15后x(t)取值接近于零,所以将横坐标改成0到15,看得更清晰 axis([0,15,-0.2,0.6]);

(3)>> t=-0.1:0.01:0.1;x=cos(100*t)+cos(3000*t);plot(t,x); >> title('杨婕婕朱艺星'); >>xlabel('x=cos(100*t)+cos(3000*t)'); 因为t的间隔取太大,以至于函数不够准确,缩小t的间隔:t=-0.1:0.002:0.2;x=cos(100*t)+cos(3000*t); plot(t,x);title('杨婕婕')

Matlab使用技巧

Matlab-scope示波器菜单调用命令set(0,'ShowHiddenHandles','on'); set(gcf,'menubar','figure'); 一般的测量检测模块是把示波器输入端连到要测量的参数所在点或者回路。Multimeter则不一样。楼主有没有注意过有的模块的连接是尖头的,有的是一个圆圈形状的?可以理解为尖头的是弱电或数字信号,可以用示波器直接测。圆头的是强电信号,不能直接用示波器。对于这样的信号,一般是:有些器件(强电器件)打开后,器件设置单中最后有一栏是“测量量”,选择测量什么信号以后,再用Multimeter“不接触测量”。比如:一个RLC模块,最后一栏选定“测量所有电流电压”。注意这之前Multimeter打开左栏是空白的,外观是一个“回”里面一个“0”,选定RLC“测量所有电流电压”后打开Multimeter,左栏就有RLC的电流电压什么的了。选定要测的,移到右栏,就可以用示波器测波形了。此后“回”里面就不是“0”了,而是用户选择测量的数据个数了。matlab 6.5/7.0——simulink模型无法保存及其兼容性问题完整解决方案2009-06-25 09:45 mdl文件在6.5里面做的,但是到了7.0里面却打不开,下面就是相关信息:Warning: Unable to load model file 'd:\MATLAB7\work\*.mdl'. Run "bdclose all;

set_param(0, 'CharacterEncoding', Enc)" where Enc is one of windows-1252, ISO-8859-1, then load the model. The first character that is not supported in the current character encoding setting ('ibm-1386_P100-2002') occurs on line 1795, byte offset 21. To correctly load models with non-ASCII characters, you must explicitly use the character encoding that was used to save the file. Type "help slCharacterEncoding" for more information on setting character encoding and to learn more about which encodings are commonly found on your platform. 或 者是直接保存出现如下信息:Error while saving model 'untitled'using the character encoding setting 'ibm..... 问题产生原因:模型中含有不能识别的字符,比如中文等等,尤其是matlab对中文的支持不是很 好(不知道是不是D版的原因)。解决的办法:(1)在工作空间中输入下列命令,然后打开bdclose all; set_param(0,'CharacterEncoding','windows-1252') 或(2)在工作空间中输入下列命令,然后打开bdclose all set_param(0, 'CharacterEncoding', 'ISO-8859-1') 或(3)在工作空间中输入下列命令,然后

Matlab基础知识点汇总

MATLAB讲义 第一章 MATLAB系统概述 1.1 MATLAB系统概述 MATLAB(MATrix LABoratory)矩阵实验室的缩写,全部用C语言编写。 特点: (1)以复数矩阵作为基本编程单元,矩阵运算如同其它高级语言中的语言变量操作一样方便,而且矩阵无需定义即可采用。 (2)语句书写简单。 (3)语句功能强大。 (4)有丰富的图形功能。如plot,plot3语句等。 (5)提供了许多面向应用问题求解的工具箱函数。目前,有20多个工具箱函数,如信号处理、图像处理、控制系统、系统识别、最优化、神经网络的模糊系统等。 (6)易扩充。 1.2 MATLAB系统组成 (1)MATLAB语言 MATLAB语言是高级的矩阵、矢量语言,具有控制流向语句、函数、数据结构、输入输出等功能。同时MATLAB又具有面向对象编程特色。MATLAB语言包括运算符和特殊字符、编程语言结构、字符串、文件输入/输出、时间和日期、数据类型和结构等部分。 (2)开发环境 MATLAB开发环境有一系列的工具和功能体,其部分具有图形用户界面,包括MATLAB桌面、命令窗口、命令历史窗口、帮助游览器、工作空间、文件和搜索路径等。 (3)图形处理 图形处理包括二维、三维数据可视化,图像处理、模拟、图形表示等图形命令。还包括低级的图形命令,供用户自由制作、控制图形特性之用。 (4)数学函数库 有求和、正弦、余弦等基本函数到矩阵求逆、求矩阵特征值和特征矢量等。 MATLAB数学函数库可分为基本矩阵和操作、基本数学函数、特殊化数学函数、线性矩阵函数、数学分析和付里叶变换、多项式和二重函数等。 (5)MATLAB应用程序接口(API) MATLAB程序可以和C/C++语言及FORTRAN程序结合起来,可将以前编写的C/C++、FORTRAN语言程序移植到MATLAB中。 1.3 MATLAB的应用围包括: MATLAB的典型应用包括: ●数学计算 ●算法开发 ●建模、仿真和演算 ●数据分析和可视化 ●科学与工程绘图 ●应用开发(包括建立图形用户界面) 以矩阵为基本对象 第二章 Matlab基础

Matlab入门基础知识整理

MATLAB基础知识 MATLAB的主要功能 1.数值计算和符号计算功能 例如,求解线性方程组 在MATLAB命令窗口输入命令: a=[2,3,-1;3,-5,3;6,3,-8]; b=[7;8;9]; x=inv(a)*b 也可以通过符号计算来解此方程 syms x1 x2 x3 [x1,x2,x3]=solve(2*x1+3*x2-x3-7,3*x1-5*x2+3*x3-8,6*x1+3*x2-8*x3-9) 2.绘图功能 例如,分别绘制函数y=300sinx/x和y=x2的曲线 x=-20:0.1:20; plot(x,300*sin(x)./x,':',x,x.^2); 3.程序设计语言功能 MATLAB是解释性语言,程序执行速度较慢,而且不能脱离MATLAB环境而独立运行。MathWorks公司提供了将MATLAB源程序编译为独立于MATLAB集成环境运行的EXE文件以及将MATLAB程序转化为C语言程序的编译器。4.扩展功能 MATLAB包含两部分内容:基本部分和各种可选的工具箱。 基本部分构成了MATLAB的核心内容,也是使用和构造工具箱的基础。 工具箱扩展了MATLAB的功能。 功能性工具箱 学科性工具箱 MATLAB的集成开发环境 命令窗口(Command Window)用于输入命令并显示除图形以外的所有执行结果。一般来说,一个命令行输入一条命令,命令行以回车或分号结束 但一个命令行也可以输入若干条命令,各命令之间以逗号或分号隔开 如果一个命令行很长,一个物理行之内写不下,可以在第1个物理行之后加上3个小黑点并按下回车键,然后接着下一个物理行继续写命令的其他部分。3个小黑点称为续行符,即把下面的物理行看作该行的逻辑继续。例如: z=1+1/(1*2)+1/(1*2*3)+1/(1*2*3*4)+ … 1/(1*2*3*4*5) 工作空间(Workspace)是MATLAB用于存储各种变量的内存空间。 当前目录(Current Directory)是指MATLAB运行时的工作目录,只有在当前目录下的文件、函数才可以被运行或调用。 如果没有特殊指明,数据文件也将存放在当前目录下。 命令历史窗口 自动保留自安装起所有用过的命令的历史记录,并且还标明了使用时间,从而方便用户查询。而且,通过双击命令可进行历史命令的再运行。 MATLAB的帮助功能 进入MATLAB帮助界面可以通过以下方法。 ●单击MATLAB主窗口工具栏中的Help按钮。

matlab编程技巧

1、. Ctrl+C 中断正在执行的操作 如果程序不小心进入死循环,或者计算时间太长,可以在命令窗口中使用Ctrl+c来中断。MATLAB这时可能正疲于应付,响应会有些滞后。 2. figure命令新建一个绘图窗口 figure 可以打开一个空的绘图窗口,接下的绘图命令可以将图画在它里面,而不会覆盖以前的绘图窗口。当有多个figure窗口时,在命令窗口中执行如Plot等命令将覆盖当前figure窗口中的对象。所谓的当前figure窗口,也就是最后一次查看的窗口(可以用命令gcf得到)。 figure(N),将编号为N的窗口置为当前figure,出现在所有窗口的最前面,如果该窗口不存在,则新建一个编号为N的空白figure。 3. 注释掉一段程序:%{、%}。 经典方法是用 if 0,但缺点是不够直观,注释掉的内容仍然保持代码的颜色。现在可以用 %和{ 的组合。输入%{后,后面的代码都会变绿,在注释结束的地方再加上 %} 。 也可以选中要注释内容,在右键菜单中选择Comment (Uncomment去掉注释标记),或使用快捷键Ctrl+R。 将光标放在需要注释的行中,按Ctrl+R,将该行变为注释。取消注释也是一样的,快捷键为Ctrl+T。 4. doc 命令名,打开命令的帮助文档 与help命令不同,帮助文档MATLAB Help中对命令的描述更详细,往往还有一些例子,更便于理解。 5. clc 清屏 清除命令窗口中的所有输入和输出信息,不影响命令的历史记录。 6. clear 和clear all clear 变量名:可以清除workspace中的无用的变量,尤其是一些特别大的矩阵,不用时及时清理,可以减少内存占用。 clear all 清除所有的变量,使workspace一无所有,当重新开始一次算法验证时,最好执行一次,让workspace中的变量一目了然。 7. close all 如果开了多个绘图窗口,用这个命令将它们一起关掉。 8. 上下光标键↑↓ 在命令窗口中,上下光标键可以将历史记录中的命令复制到输入位置,便于快速重新执行。如果输入命令的前几个字母如 [row, col] =,再使用光标键,则只会选择以这些字母开始的命令。 9. Tab补全 对名称记得不太清楚的命令,可以输入开头的几个字母,然后按Tab键,当只有一个以这些字母开头的命令时,将自动补全命令名,否则显示一个命令名列表,方便从中选择。当然,只在命令窗口中有效。 10. cell模式 在一个长长的脚本m文件中,可能需要对其中的一段反复修改,查看执行效果,这时,cell模式就非常有用了。cell模式相当于将其中的代码拷贝到命令窗口中运行。两个%后接一个空格(%% )开始一个cell。将输入光标放到一个cell中时,背景将变为浅黄色,Ctrl+Enter执行cell中的代码。 执行cell中代码时不需要保存m文件,该m文件可以不在路径列表中。 cell模式中,断点不起作用,当然,调用的子程序中的断点还是正常的。 11. 获取文件列表,批处理

MATLAB基础知识考试复习总结

第一章MATLAB基础 1系统仿真是根据被研究的真实系统的数学模型研究系统性能的一门学科,现在尤指利用计算机去研究数学模型行为的方法,即数值仿真。 2MATLAB集计算,可视化及编程于一身。其主要产品模块构成:(1)MATLAB(2)MATLABtoolbox(3)MATLAB Compiler(4)simulink(5)stateflow(6)Real-Time Workshop。 3MATLAB语言被称为第四代计算机语言。有以下几个主要特点:编程效率高;使用方便;高效方便的科学计算;先进的可视化工具;开放性、可扩展性强;运行时动态连接外部C或FORTRAN应用函数;在独立C或FORTRAN程序中调用MATLAB 函数;输入输出各种MATLAB及其他标准格式的数据文件;创建图文并茂的技术文档;特殊应用工具箱;高效仿真工具Smulink。 4变量命名规则:变量名、函数名对字母大小写敏感;变量名第一个字母必须是英文字母(只能是英文、数字和下连线)。 5 real(z)求复数Z实部 imag(Z)求复数Z虚部 abs(z) 求复数Z的模angle(Z)求复数Z的相角(单位是弧度) callback回校函数mdata=csvread(‘engdata.txt’) clc清除指令窗 clf清除图形窗 cd设置当前工作目录clear清除工作空间保存的变量 edit打开M文件编辑器exit、quit关闭、退出MATLAB 6 c=3+5i c=3+5*i (a=3;b=5;c=a+b*i) 1.3e-4 2.78e23 A.’转置S.*B S./B B.\S A.^n 7Command History(历史指令)窗记录着用户在命令指令窗中所输入过的所有指令行,且所有这些被记录的指令行都能被复制,并送到指令窗中再运行。 8Workspace Browser(工作空间浏览器)也叫内存浏览器,他保存了指令窗所使用过的全部变量(除非有意删除),可通过该浏览器对内存变量进行操作。 10点击MATLAB桌面工具条上的?图标,或选择下拉菜单项【Help】,都能提供帮助;MATLAB还提供现场帮助,用鼠标点亮指令并点击右键,在弹出的菜单中选择【Help On Selection】。 第二章数据及其运算 1简单数组生成方法:逐个元素输入法;冒号生成法[x=a:intc:b]; [x=linspace(a,b,n)]=[a:(b-a)/(n-1):b];logspace(w1,w2,n) 2>> diag([3,3,3])产生对角形数组 ans =3 0 0 0 3 0 0 0 3 >> eye(3) 产生单位数组 ans =1 0 0 0 1 0 0 0 1 >> magic(3) 产生魔方数组 a ns =8 1 6

基带信号眼图实验——matlab仿真

基带信号眼图实验——matlab 仿真

————————————————————————————————作者:————————————————————————————————日期: ?

数字基带信号的眼图实验——matla b仿真 一、实验目的 1、掌握无码间干扰传输的基本条件和原理,掌握基带升余弦滚降系统的实现方法; 2、通过观察眼图来分析码间干扰对系统性能的影响,并观察在输入相同码率的NRZ 基带信号下,不同滤波器带宽对输出信号码间干扰大小的影响程度; 3、熟悉MATL AB 语言编程。 二、实验预习要求 1、复习《数字通信原理》第七章7.1节——奈奎斯特第一准则内容; 2、复习《数字通信原理》第七章7.2节——数字基带信号码型内容; 3、认真阅读本实验内容,熟悉实验步骤。 三、实验原理和电路说明 1、基带传输特性 基带系统的分析模型如图3-1所示,要获得良好的基带传输系统,就应该 () n s n a t nT δ-∑() H ω() n s n a h t nT -∑基带传输抽样判决 图3-1?基带系统的分析模型 抑制码间干扰。设输入的基带信号为()n s n a t nT δ-∑,s T 为基带信号的码元周期,则经过基 带传输系统后的输出码元为 ()n s n a h t nT -∑。其中 1 ()()2j t h t H e d ωωωπ +∞ -∞ = ? ?(3-1) 理论上要达到无码间干扰,依照奈奎斯特第一准则,基带传输系统在时域应满足: 10()0,s k h kT k =?=? ? , 为其他整数 ?? ?(3-2) 频域应满足:

MATLAB使用方法1

A a abs绝对值、模、字符的ASCII码值acos反余弦 acosh反双曲余弦 acot反余切 acoth反双曲余切 acsc反余割 acsch反双曲余割 align启动图形对象几何位置排列工具all所有元素非零为真 angle相角 ans表达式计算结果的缺省变量名any所有元素非全零为真 area面域图 argnames函数M文件宗量名 asec反正割 asech反双曲正割 asin反正弦 asinh反双曲正弦 assignin向变量赋值 atan反正切 atan2四象限反正切 atanh反双曲正切 autumn红黄调秋色图阵 axes创建轴对象的低层指令 axis控制轴刻度和风格的高层指令 B b bar二维直方图 bar3三维直方图 bar3h三维水平直方图 barh二维水平直方图 base2dec X进制转换为十进制 bin2dec二进制转换为十进制blanks创建空格串 bone蓝色调黑白色图阵 box框状坐标轴 break while或for环中断指令brighten亮度控制C c capture(3版以前)捕获当前图形 cart2pol直角坐标变为极或柱坐标 cart2sph直角坐标变为球坐标 cat串接成高维数组 caxis色标尺刻度 cd指定当前目录 cdedit启动用户菜单、控件回调函数设计工具 cdf2rdf复数特征值对角阵转为实数块对角阵 ceil向正无穷取整 cell创建元胞数组 cell2struct元胞数组转换为构架数组celldisp显示元胞数组内容 cellplot元胞数组内部结构图示 char把数值、符号、内联类转换为字符对象 chi2cdf分布累计概率函数 chi2inv分布逆累计概率函数 chi2pdf分布概率密度函数 chi2rnd分布随机数发生器 chol Cholesky分解 clabel等位线标识 cla清除当前轴 class获知对象类别或创建对象 clc清除指令窗 clear清除内存变量和函数 clf清除图对象 clock时钟 colorcube三浓淡多彩交叉色图矩阵colordef设置色彩缺省值 colormap色图 colspace列空间的基 close关闭指定窗口 colperm列排序置换向量 comet彗星状轨迹图 comet3三维彗星轨迹图 compass射线图

信号与系统MATLAB实验总汇

实验一、MATLAB 编程基础及典型实例 一、实验目的 (1)熟悉MATLAB 软件平台的使用; (2)熟悉MATLAB 编程方法及常用语句; (3)掌握MATLAB 的可视化绘图技术; (4)结合《信号与系统》的特点,编程实现常用信号及其运算。 示例一:在两个信号进行加、减、相乘运算时,参于运算的两个向量要有相同的维数,并且它们的时间变量范围要相同,即要对齐。编制一个函数型m 文件,实现这个功能。function [f1_new,f2_new,n]=duiqi(f1,n1,f2,n2) a=min(min(n1),min(n2)); b=max(max(n1),max(n2)); n=a:b; f1_new=zeros(1,length(n)); f2_new=zeros(1,length(n)); tem1=find((n>=min(n1))&(n<=max(n1))==1); f1_new(tem1)=f1; tem2=find((n>=min(n2))&(n<=max(n2))==1); f2_new(tem2)=f2; 四、实验内容与步骤 (2)绘制信号x(t)=)3 2sin(2t e t ?的曲线,t 的范围在0~30s ,取样时间间隔为0.1s 。t=0:0.1:30; y=exp(-sqrt(2)*t).*sin(2*t/3); plot(t,y);

(3)在n=[-10:10]范围产生离散序列:?? ?≤≤?=Other n n n x ,033,2)(,并绘图。n=-10:1:10; z1=((n+3)>=0); z2=((n-3)>=0); x=2*n.*(z1-z2); stem(n,x);(4)编程实现如下图所示的波形。 t=-2:0.001:3; f1=((t>=-1)&(t<=1)); f2=((t>=-1)&(t<=2)); f=f1+f2; plot(t,f); axis([-2,3,0,3]);

matlab技巧

axis([xmin xmax ymin ymax]) 设置当前图形的坐标范围,分别为x轴的最小、最大值,y轴的最小最大值 坐标轴的编辑在figure—edit—axe property中 一、散点图 1.1.命令 plot 功能线性二维图。在线条多于一条时,若用户没有指定使用颜色,则plot循环使用由当前坐标轴颜色顺序属性(current axes ColorOrder property)定义的颜色,以区别不同的线条。在用完上述属性值后,plot又循环使用由坐标轴线型顺序属性(axes LineStyleOrder property)定义的线型,以区别不同的线条。 用法 plot(X,Y) 当X,Y均为实数向量,且为同维向量(可以不是同型向量),X=[x(i)],Y=[y(i)],则plot(X,Y)先描出点(x(i),y(i)),然后用直线依次相连;若X,Y为复数向量,则不考虑虚数部分。若X,Y均为同维同型实数矩阵,X = [X(i)],Y = [Y(i)],其中X(i),Y(i)为列向量,则plot(X,Y)依次画出plot(X(i),Y(i)),矩阵有几列就有几条线;若X,Y中一个为向量,另一个为矩阵,且向量的维数等于矩阵的行数或者列数,则矩阵按向量的方向分解成几个向量,再与向

量配对分别画出,矩阵可分解成几个向量就有几条线;在上述的几种使用形式中,若有复数出现,则复数的虚数部分将不被考虑。 plot(Y) 若Y为实数向量,Y的维数为m,则plot(Y)等价于plot(X,Y),其中x=1:m;若y为实数矩阵,则把y按列的方向分解成几个列向量,而y 的行数为n,则plot(Y)等价于plot(X,Y)其中x=[1;2;…;n];在上述的几种使用形式中,若有复数出现,则复数的虚数部分将不被考虑。 plot(X1,Y1,X2,Y2,…),其中Xi与Yi成对出现,plot(X1,Y1,X2,Y2,…)将分别按顺序取两数据Xi与Yi进行画图。若其中仅仅有Xi或Yi是矩阵,其余的为向量,向量维数与矩阵的维数匹配,则按匹配的方向来分解矩阵,再分别将配对的向量画出。 plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2…) 将按顺序分别画出由三参数定义Xi,Yi,LineSpeci的线条。其中参数LineSpeci指明了线条的类型,标记符号,和画线用的颜色。在plot 命令中我们可以混合使用三参数和二参数的形式: plot(X1,Y1,LineSpec1,X2,Y2,X3,Y3,LineSpec3) plot(…,'PropertyName',PropertyValue,…) 对所有的用plot生成的line图形对象中指定的属性进行恰当的设置。 h = plot(…) 返回line图形对象句柄的一列向量,一线条对应一句柄值。 说明参数LineSpec 功能定义线的属性。Maltab允许用户对线条定义如下的特性: 1.线型 表7-1 2.线条宽度

实验一----信号的MATLAB表示及信号的运算

实验一----信号的MATLAB表示及信号的运算

信号的MATLAB表示及信号的运算 一、实验目的 1.掌握的MATLAB使用; 2.掌握MATLAB生成信号的波形; 3.掌握MATLAB分析常用连续信号; 4.掌握信号的运算的MATLAB实现。 二、实验工具 1.台式电脑一台; 2.MATLAB7.1软件环境; 三、实验内容 编写程序实现下列常用函数,并显示波形。 1.正弦函数 f(t)=Ksin(wt+a); 2.矩形脉冲函数f(t)=u(t)-u(t-t0); 3.抽样函数 sa(t)=sint/t; 4.单边指数函数 f(t)=Ke-t; 5.已知信号f1(t)=u(t+2)-u(t-2), f2(t)=cos(2pt),用MATLAB绘制f1t)+f2(t)和f1(t)*f2(t)的波形。

四、实验要求 预习信号的时域运算和时域变换(相加、相乘、移位、反折、尺度变化、例项)相关知识。 五、实验原理 在某一时间区间内,除若干个不连续的点外,如果任意时刻都可以给出确定的函数值,则称信号为连续时间信号,简称为连续信号。MATLAB提供了大量生成基本信号的函数,所以可利用连续信号在等时间间隔点的取值来近似表示连续信号,这些离散的数值能被MATLAB处理,并显示出来。 六、实验步骤 1.打开MATLAB7.1软件,并在老师的指导和带领下逐步熟悉此软件; 2.编写正弦函数程序: clear all; t=-8:.01:8; k=2;w=1;a=pi/4; f=k*sin(w*t+a); plot(t,f);

grid; xlabel('t'); ylabel('f(t)'); axis([-8 8 -3 3]); 3.编写矩形脉冲信号函数程序: clear all; t=-4:0.001:4; T=1; f1=rectpuls(t,4*T); f2=cos(2*pi*t); plot(t,f2+f1); axis([-4 4 -1.5 2.5]); grid on; figure plot(t,f2.*f1); axis([-4 4 -1.5 1.5]); grid on;

(完整版)matlab的一些画图技巧

matlab中如何在指定一点画一个填充颜色的小圆 plot(1,1,'r.','markersize',50) 二维作图 绘图命令plot绘制x-y坐标图;loglog命令绘制对数坐标图;semilogx和semilogy命令绘制半对数坐标图;polor命令绘制极坐标图. 基本形式 如果y是一个向量,那么plot(y)绘制一个y中元素的线性图.假设我们希望画出 y=[0., 0.48, 0.84, 1., 0.91, 6.14 ] 则用命令:plot(y) 它相当于命令:plot(x, y),其中x=[1,2,…,n]或x=[1;2;…;n],即向量y的下标编号, n为向量y的长度 Matlab会产生一个图形窗口,显示如下图形,请注意:坐标x和y是由计算机自动绘出的. 图4.1.1.1 plot([0.,0.48,0.84,1.,0.91,6.14])

上面的图形没有加上x轴和y轴的标注,也没有标题.用xlabel,ylabel,title 命令可以加上. 如果x,y是同样长度的向量,plot(x,y)命令可画出相应的x元素与y元素的x-y坐标图.例: x=0:0.05:4*pi; y=sin(x); plot(x,y) grid on, title(' y=sin( x )曲线图' ) xlabel(' x = 0 : 0.05 : 4Pi ') 结果见下图. 图4.1.1.2 y=sin(x)的图形 title图形标题 xlabel x坐标轴标注 ylabel y坐标轴标注 text标注数据点

legend 在右上角加解释 文字 grid给图形加上网格 hold保持图形窗口的图形 表4.1.1.1 Matlab图形命令 多重线 在一个单线图上,绘制多重线有三种办法. 第一种方法是利用plot的多变量方式绘制: plot(x1,y1,x2,y2,...,xn,yn) x1,y1,x2,y2,...,xn,yn是成对的向量,每一对x, y在图上产生如上方式的单线.多变量方式绘图是允许不同长度的向量显示在同一图形上.第二种方法也是利用plot绘制,但加上hold on/off命令的配合:plot(x1,y1) hold on plot(x2,y2) hold off 第三种方法还是利用plot绘制,但代入矩阵:

相关文档