文档库 最新最全的文档下载
当前位置:文档库 › matlab学习手记

matlab学习手记

matlab学习手记
matlab学习手记

matlab GUI 设计学习手记3

2010-08-26 17:43:29| 分类:MATLAB GUI设计学| 标签:|字号大中小订阅

clear 移除工作空间里的数据项,释放内存

isvarname 检查输入的字符串是否为有效地变量名

genvarname 采用字符串构建有效的变量名

ans 当没有指定输入变量名时,临时存储最近的答案

namelengthmax 返回最大的标识符长度

global a 声明全局变量a

persistent a 声明永久变量a

eps 浮点数相对精度(matlab计算时的容许误差)

intmax 本计算机能表示的最大整数

intmin 本计算机能表示的最小整数

realmax 本计算机能表示的最大浮点数

realmax 本计算机能表示的最小浮点数

pi 圆周率 3.1415926……

i,j 虚数单位

inf 无穷大

NaA 非数,无效数值

computer 计算机类(比如当返回字符串PCWIN时,操作系统为Microsoft Windows)

version matlab版本字符串

iskeyword 查看matlab所有的关键字

运算符主要分为算术运算符、关系运算符、和逻辑运算符三大类、

算术运算符分为:矩阵运算和数组运算(矩阵运算是按线性代数的规则进行运算,而数组运算是数组对应元素间的运算)。一个标量与数组的运算,是标量与数组每个元素之间的运算,这种特性称之为标量扩展。

关系运算用于比较两个同维数组伙食同维向量的对应元素,结果为一个同维的逻辑数组。如果运算对象一个为标量,另一个为数组或是向量,那么先进行标量扩展,然后再比较。

matlab提供了两种类型的逻辑运算:一般逻辑运算和捷径运算。捷径运算符只能对标量值执行逻辑与(&&)和逻辑或(||)运算(捷径运算首先判断第一个运算对象,如果可以知道结果,直接返回,而不是继续判断第二个运算对象。如>>x=b&&(a/b>10),如果b 为0。捷径运算符就不会计算(a/b>10)的值了,也就避免了被0除的错误)。

位运算:

bitand 位与bitor 位或bitcmp 位比较,反码bitxor 位异或bitget 返回指定位的数值,值为0或1,double型

bitset 设定指定位的值为0或1。返回运算结果

bitshift 移位运算,返回运算结果

swapbytes 翻转字节的位顺序,返回运算结果

特殊的运算符:

[ ] 生成向量和矩阵

()在算术运算中优先计算;封装函数参数;封装向量或是矩阵的下标

{ } 给单元数组赋值,或是创建一个空单元数组

' 在矩阵或向量之后表示复共轭转置;两个' 之间的字符为字符串

. 域访问

…续行符

;在括号内结束行;禁止表达式显示结果;隔开声明

:创建矢量、数组下标;循环迭代

% 注释;格式转换定义符中的初始化字符

@ 函数句柄,类似于c语言中的取址运算符

matlab中提供了一种非常重要的特殊表达式:字符串计算表达式。字符串计算有两个函数:eval和feval。前者计算包含表达式的字符串,调用方式是eval(expression);后者以字符串或函数句柄为函数名进行计算,调用方式是[y1,y2…]=feval(fun_name,

x1,x2,…xn)。

如>> t=0:.1:2*pi;

>> y=eval('sin(t)');

>> plot(y)

>> t=0:.1:2*pi;

>> y=feval(@sin,t); %或是y=feval('sin',t);

>> plot(y)

(以上例子的结果都相同,都是利用matlab绘制正弦函数)

int8,uint8,int16,uint16,int32,uint32,int64,uint64 带符号和无符号整数数组。存储空间比单精度或双精度数组小。除int64和uint64外,其余都可用于数学运算。

整数或是整数数组与标量double型浮点数运算的结果的数据类型与整数操作数的一样。如

>> x=uint32([21 32 43])*1.1

x =

23 35 47 %结果都是想乘四舍五入得出来的

常见的整数操作函数:

ceil 向无穷大方向取整

round 四舍五入

fix 向0取整

floor 向无穷小方向取整

isinteger 判断输入是否为整数数组

isnumeric 判断输入是否为数值数组

如>> a=[0.1 2 3];

>> isinteger(a)

ans =

浮点数有单精度(single)和双精度(double)两种格式,默认是double,两者可以进行强制类型转换。double型数据共64位,single共32位。

常见的浮点数操作函数:

isfloat 检查输入是否为浮点数

eps 浮点相对精度

realmax 返回本计算机能够表示的最大浮点数

realmin 返回本计算机能够表示的最小浮点数

isreal 检查是否数组所有元素为实数

complex函数生成复数,其调用格式有两种:

c=complex(a,b) 生成复数c,且c=a+bi

c=complex(a) 生成复数c,且c=a。c的虚部为0

从复数中提取实部和虚部,分别用real和imag函数,如

>> z=2+3i;

>> real(z)

ans =

2

>> imag(z)

ans =

3

数值型数据还经常用到的一些其他函数

format 控制输出的显示格式(这个函数仅改变数值的显示的方式,并不影响matlab怎样计算和保存数值)

whos 显示输入的数据类型(调用格式是>>whos 变量名)

class 创建对象或返回对象类型

isa 检查输入是否为指定的数据类型

isfinite 检查数组元素是否为有限值

isinf 检查数组元素是否为无穷大或无穷小

isnan 检查数组元素时候为NaN

常用的字符串操作函数

1.t=strcat(s1,s2…… )依次横向连接字符数组s1,s2……

2.S=strvcat(t1,t2……)依次纵向连接字符数组t1,t1……

3.S=char(t1,t2……)创建二维数组,断的字符串后面加空格,使每行长度一致

S=char(C)将字符串单元数组C转换为二维字符数组

4.tf=ischar(A) A为字符数组返回真,否则返回假

5.c=cellstr(S) 生成字符串单元数组

6.blanks(n)创建含n个空格符的字符串

7.c=deblank(c)去掉字符串或单元数组所包含的字符串尾部空格

8.[s,errmsg]=sprintf(format,A,……)按格式format写矩阵A的数据到字符串s

9.A=sscanf(s,format)按格式format从字符串变量s中读取数据

A=sscanf(s,format,size)

10.eval(expression)执行由matlab表达式组成的字符串

[a1,a2……]=eval['function(b1,b2……)']

11.[y1,y2……]=feval(fhandle,x1,……xn)只执行函数;fhandle为函数句柄,

[y1,y2……]=feval('function',x1,……xn)'function'为包含函数名的字符串;x1,……xn为被执行函数的输入参数

12.t=lower(s) 将包含的全部字母转换为小写

13.B=upper(s)将包含的全部字母转换为大写

14.B=sort(A)按值的大小对数组元素排序

B=sort(A,dim)

15.S=strtrim(str)移除字符串首部和尾部的空白

16.str=strrep(str1,str2,str3)将str1中的str2全部替换为str3

17.T=strjust(S)调整字符数组的对齐方式,分为靠右、靠左、居中。其他位置填充空格

T=strjust(S,'right')

T=strjust(S,'left')

T=strjust(S,'center')

18. k=findstr(str1,str2)在长字符串中收索短字符串

19.k=strfind(str1,str2)在str1中搜索str2

20.k=strcmp('str1','str2')比较str1与str2,完全相同才返回真,否则返回假

k=strcmp(S,T)比较字符串单元数组S和T,对应单元相同返回真

21.k=strncmp('str1','str2',n)str1与str2前n个字符完全相同返回真

22.x=strmatch('str',STRS)查找符合要求的字符串在字符数组中的位置,返回符合要求的行位置

x=strmatch('str',STRS,'exact')

23.token=strtok('str')token为字符串'str'中被选择的部分,

token=strtok('str',delimiter)delimiter为分割符

[ token,remain]=strtok(……)remain为字符串'str'中未被选中的部分

24.tf=isstrprop('str','category')数组原始为category类型,返回真

25.tf=isletter('str')数组元素若为字母,返回真

26.tf=isspace('str')数组元素若为空格字符,返回真

27.str=num2str(A)数字转化为字符串

str=num2str(A,precision)precision为最大精度,默认为5位精度

str=num2str(A,format)format为格式字符串

28.x=str2num('str')将字符串或字符数组转换为数字或矩阵;4位精度

29.str=int2str(N)将整数N转换为字符串str;N也可为整数矩阵;非整数先进行四舍五入,再进行转化

30. x=str2double(‘str’)字符串或字符串单元数组转换为双精度;输入若不是有效标量值返回NaN

X=str2double(C)

31.str=mat2str(A) 矩阵转换为字符串;n为数字精度

str=mat2str(A,n)

1. strcat分几种情况:一、当s1,s2,s3……为字符数组时,所有字符数组的行数必须相等,各行相连组成新的字符数组;若s1,s2,s3……包含单个字符串,则将单个字符串纵向扩展成与其他字符数组行数相同的字符数组,然后各行相连,组成新的字符数组

>> s1=['ab ';'cde']; %行数都相同,注意b后面有一个空格

>> s2=['r';'l'];

>> strcat(s1,s2)

ans =

abr

cdel

>> s1=['ab ';'cde';'f ']; %行数不同,则出错

>> s2=['r';'l'];

>> strcat(s1,s2)

??? Error using ==> strcat

All the inputs must have the same number of rows or a single row.

>> s1=['ab ';'cde';'f ']; %此例题中s2为单个字符串,则将其扩展为['rl';'rl']

>> s2=['rl'];

>> strcat(s1,s2)

ans =

abrl

cderl

frl

二、当s1,s2,s3……中至少有一个字符串单元数组时,此时连接字符数组或字符串单元数组的对应单元,返回一个单元数组。s1,s2,s3……必须有相同的尺寸,除非为单个字符串。

>> s1={'a','b'}; %{ }内以逗号隔开,则字符串单元数组以行向量的形式显示

s1 =

'a' 'b'

>> s2=['c';'d']; %[ ]内以分号隔开,则字符串以列向量的形式显示

s2 =

c

d

>> s3='e';

>> strcat(s1,s2,s3)

??? Error using ==> cell.strcat %因为s1和s2的向量形式不对,故出现了错误

All the inputs must be the same size or scalars.

>> s1={'a','b'}; %逗号

>> s2=['c','d']; %[ ]内以逗号隔开,此时[ ]起连接两个字符串的作用,即s2='cd'

>> s3='e';

>> strcat(s1,s2,s3) %首先将s2扩展为'cd',' cd' s3扩展为'e','e'

ans =

'acde' 'bcde'

>> s1={'a';'b'}; %分号

>> s2=['c','d'];

>> s3='e';

>> strcat(s1,s2,s3)

ans =

'acde'

'bcde' %与上例中的显示格式不一样。区别在与s1的格式不一样

>> s1={'a';'b'};

>> s2=['c';'d']; %此题与上例的不同是s2的格式不一样,此处[ ]不起连接字符串的作用

>> s3='e';

>> strcat(s1,s2,s3)

ans =

'ace'

'bde'

strcat与连接运算符[ ]都能连接字符数组,但是它们有以下重要的区别:1 连接字符数组时,strcat先将每个字符串尾部的空格去掉再连接;而[ ]会原封不动地将字符数组连接起来。

>> s1='a';

>> s2=' bc'; %b前面有两个空格

>> [s1 s2] %等同于[s1,s2] ,但不等同于[s1;s2]

ans =

a bc %b前面有两个空格

>> [s1;s2]

??? Error using ==> vertcat

All rows in the bracketed expression must have the same

number of columns.

当s1,s2,s3……中含有字符串单元数组时,strcat不会改变单元数组的维数,但[ ]会将每个输入当做一个单元数组,然后增加维数。

>> strcat({'a','bc'},'d') %{ }内以逗号隔开

ans =

'ad' 'bcd'

>> strcat({'a';'bc'},'d') %{ }内以分号隔开

ans =

'ad'

'bcd'

>> [{'a','bc'},'c'] %增加单元数组的维数

ans =

'a' 'bc' 'c'

>> [{'a','bc'},{'c'}]

ans =

'a' 'bc' 'c'

21.strcmp函数使用有以下3种情况:

一、比较字符串是否相同,相同返回逻辑值1。比较字符串是否相同还可以用isequal函数。它们的区别在于:isequal的实质是将字符串转换为ASCII码后再进行比较。

>> strcmp('ab','ab') %前两个例子结果相同

ans =

1

>> isequal('ab','ab')

ans =

1

>> isequal('ab',[97 98]) %后两个例子结果不同

ans =

1

>> strcmp('ab',[97 98])

ans =

二、比较字符串与字符串单元数组时,这把每个单元相比较,返回一个逻辑矩阵

>> strcmp({'ab','cd'},'cd')

ans =

0 1

三,两个单元数组相比较时,若一个单元数组尺寸为1*1,则将它与多维单元数组的每一维相比较,返回一个逻辑矩阵;若两个单元数组都是多维,则它们必须是同维,对应单元相比较,返回一个逻辑矩阵。

9.10.sprintf和sscanf有些类似于c语言中的printf和scanf函数

转义字符和转换字符查找相关资料

>> sprintf('6=\n%dmmm%d',2,3)

ans =

6=

2mmm3

19.20.findstr和strfind函数都只能对一维字符数组(即字符串)进行操作。它们的区别是findstr会自动比较输入的两个字符串长度,然后在长的字符串中搜索短的字符串,对两个字符串的顺序没有要求;而strfind要求在第一个字符串中搜索第二个。两者都区分大小写,如果没有找到匹配的字符串,就返回空矩阵。

24.isstrprop函数使用非常灵活。调用格式是tf=isstrprop('str','category')。字符类型'category'的所有可能取值见下

alpha 字母,如'a'

digit 数字,如'0'

alphanum 数字或字母,如'0'或'a'

cntrl 控制字符,如char(0:20)

print 图形字符,包括空格字符,即char(32)

graphic 图形字符

lower 小写字母,如'a'

upper 大写字母,如'A'

punct 标点符号,如','

wspace 空线间隔符,包括'' '\t' '\r' '\v' '\f'

xdigit 有效地十六进制数

>> S='abc';

>> isstrprop(S,'alpha')

ans =

1 1 1

27.28.num2str和str2num函数在GUI设计中经常使用,必须重点掌握。>> eps

ans =

2.2204e-016

>> num2str(eps)

ans =

2.2204e-016

>> num2str(pi,'%7.3f')

ans =

3.142

>> str2num('3.14159e0')

ans =

3.1416

>> str2num(['1 2';'3 4'])

ans =

1 2

3 4

数据类型转换函数还包括一些进制转换函数,在GUI设计中经常使用

1)str=dec2bin(d)返回整数d的二进制表示为字符串,d为小于2^52的非负整数;n为返回的二进制表示最少的位数,高位补零

str=dec2bin(d,n)

2)str=dec2hex(d)转换十进制d为十六进制形式,d为小于2^52的非负整数;n为返回的十六进制表示的最少的位数,高位补零

str=dec2hex(d,n)

3)str=dec2base(d,base)转换非负整数d为指定的进制格式,d为小于2^52的非负整数,base为2~36之间的整数,str为字符串,n为str的最少位数高位补零

str=dec2base(d,base,n)

4)bin2dec(binarystr)二进制字符串转换为十进制数(会自动忽略输入字符串中的空格)

5)d=oct2dec(c)八进制矩阵转换为同维的十进制矩阵,c为数值型

6)d=hex2dec(‘hex-value’)十六进制字符串转换为十进制浮点型整数,d<2^52(会自动忽略输入字符串中的空格)

7) d=base2dec('strn',base) 将base进制的字符串转换为十进制(会自动忽略输入字符串中的空格)

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学习笔记

1、函数eval的作用:对输入的表达式重新输出一减少系统的表达错误。 2、Global 的作用:同时用于主函数和子函数中,定义变量,使主子函数中数据共享,节 省运行时间。并在主函数中进行赋值。 4、化简式子函数:simple(f) 5, plot成了图,保存成了.fig的文件。现在没有了源码,想把数据导出怎么办? 下面地址给出了一个例子 具体的办法是: open(fnam); % fnam是文件名 lh=findall(gca,'type','line'); % 从当前图(gca)中取出曲线的handle xc=get(lh,'xdata'); % 取出x轴数据,注意,这个x和y是以cell的数据结构保存的 yc=get(lh,'ydata'); % 取出y轴数据 x=xc{1};从cell转换成矩阵,可以这样写 y=yc{1}; ----------------------------- % the data x=1:10; y=rand(size(x)); fnam='afig.fig'; % ...on display fh=figure; line(x,y); % ...and saved saveas(gcf,fnam); delete(fh); % the engine open(fnam); lh=findall(gca,'type','line'); xx=get(lh,'xdata'); yy=get(lh,'ydata'); % the result [isequal(x,xx) isequal(y,yy)]

各种数学公式的显示 积分公式: Title(‘s=\inty(t)dt’)--------一重积分 Title(‘s=\int\int y(t)dt’)-------二重积分 导数: Title(‘y{\prime}’)----------一次导数 Title(‘y{\prime\prime}’)------二次导数 数组生成: X=(0:0.1:1) x=linspace(fiest_value,last_value,number_of_value) X=logspace(fiest_value,last_value,number_of_value)……… Rand(n)生成均匀分布的随机数组,其元素值介于0~1之间; Randn(n)生成均值为0,方差为1的正态分布矩阵。 Randperm(n) 生成1到n的整数随机数组。 Magic(n) 魔方矩阵,其元素由1,2,3,…,n^2组成,其每行每列及两条对角线上的元素之和相等。 Vander(V) 范德蒙德矩阵,最后一列全为1,倒数第二列为给定列向量,其他各列是其后列与倒数第二列的点积。 Toeplitz(X,Y) 托普利兹矩阵,矩阵除第一行第一列为给定外,其他元素与其左上角元素相同。 Pascal(n) 帕斯卡矩阵,由杨辉三角行表组成的矩阵。 M函数文件开头只能是function fun=……

图论算法及其MATLAB程序代码

图论算法及其MATLAB 程序代码 求赋权图G =(V ,E ,F )中任意两点间的最短路的Warshall-Floyd 算法: 设A =(a ij )n ×n 为赋权图G =(V ,E ,F )的矩阵,当v i v j ∈E 时a ij =F (v i v j ),否则取a ii =0,a ij =+∞(i ≠j ),d ij 表示从v i 到v j 点的距离,r ij 表示从v i 到v j 点的最短路中一个点的编号. ①赋初值.对所有i ,j ,d ij =a ij ,r ij =j .k =1.转向② ②更新d ij ,r ij .对所有i ,j ,若d ik +d k j <d ij ,则令d ij =d ik +d k j ,r ij =k ,转向③. ③终止判断.若d ii <0,则存在一条含有顶点v i 的负回路,终止;或者k =n 终止;否则令k =k +1,转向②. 最短路线可由r ij 得到. 例1求图6-4中任意两点间的最短路. 解:用Warshall-Floyd 算法,MATLAB 程序代码如下: n=8;A=[0281Inf Inf Inf Inf 206Inf 1Inf Inf Inf 8607512Inf 1Inf 70Inf Inf 9Inf Inf 15Inf 03Inf 8 Inf Inf 1Inf 3046 Inf Inf 29Inf 403 Inf Inf Inf Inf 8630];%MATLAB 中,Inf 表示∞ D=A;%赋初值 for (i=1:n)for (j=1:n)R(i,j)=j;end ;end %赋路径初值 for (k=1:n)for (i=1:n)for (j=1:n)if (D(i,k)+D(k,j)

matlab中GUI设计

MATLAB的GUI 程序设计 Chapter 8: Design of MATLAB of GUI program GUI(Graphical User Interfaces):由各种图形对象组成的用户界面,在这种用户界面下,用户的命令和对程序的控制是通过“选择”各种图形对象来实现的。 基本图形对象分为控件对象和用户界面菜单对象,简称控件和菜单。 一. 控件对象及属性(Object and its attributes of controller)) 1. GUI控件对象类型(The mode of controller object) 控件对象是事件响应的图形界面对象。当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序(Callback). 控件对象及其功能:(表7—1) 2. 控件对象的描述(Description of controller object) MATLAB中的控件大致可分为两种,一种为动作控件,鼠标点击这些控件时会产生相应的响应。一种为静态控件,是一种不产生响应的控件,如文本框等。

每种控件都有一些可以设置的参数,用于表现控件的外形、功能及效果,既属性。属性由两部分组成:属性名和属性值,它们必须是成对出现的。 (1)按钮(Push Buttons):执行某种预定的功能或操作; (2)开关按钮(Toggle Button):产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并执行callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback 中的内容; (3)单选框(Radio Button):单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项; (4)复选框(Check Boxes):单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项; (5)文本编辑器(Editable Texts):用来使用键盘输入字符串的值,可以对编辑框中的内容进行编辑、删除和替换等操作; (6)静态文本框(Static Texts):仅仅用于显示单行的说明文字; (7)滚动条(Slider):可输入指定范围的数量值;

信号(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时为

MATLAB学习笔记.

MATLAB学习笔记 一.符号计算 1.MATLAB符号计算的基本用途及意义 定义:用一系列恒等式,数学定理,通过演绎和推理,力求获得精准的解析结果。 通俗理解:1) matlab符号计算就是为了解决离散化数值计算所产生的精度误差问题,用符号计算可以产生精准符号数字,或16位,32位精度的近似符号数字。例如解决以下一类问题: 其中3^(1/2)/2是由数学推理等解析出的精确的符号数字,而0.866025403784439则是由离散化数值计算得出近似的双精度浮点数。 2),利用符号计算可以进行对数学公式及某些代数方程的求解。

【例】用符号计算验证三角等式sin cos cos sin sin() ?????? -=-。 121212 syms fai1 fai2 y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2)) y = sin(fai1-fai2) 2. 符号计算基本命令 3. 对符号变量的限定性假设

4. 符号矩阵的相关命令 5. 极限,导数和积分的符号计算

6. 符号计算的可视化 ezplot 用于符号函数画二维图形的简洁命令 ezplot3 画三维图形的简洁命令 vpa(x,n) 根据符号表达式x 显示n 位有效数字的数值型结果 二.数组运算及数组化编程 1.数组的创建 x=a: inc :b 线性等距行数组 x=linspace(a, b,n) x=logspace(a,b,n) 对数等距行数组 magic 产生魔方数组(二维) eye 产生单位数组(二维)

2.数组操作函数 3.二维数组元素的寻访(1)按址寻访

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心得体会

1.前言 2.matlab的一些特点 3.学习matlab心得体会 4.matlab的一些资源 1.前言 我接触Matlab的时间比较长了,最开始是在大学里面的数学实验课上了解了一些,学了些基础的命令,后来参加过一次数学建模,又自学了点。而后由于所学的专业是生命科学和环境相关的东西,用到matlab的机会不多,主要是一些功能用matlab实现起来不是很方便,而且手边有现成的软件可以做到,例如图像分析,还有DNA序列分析都有现成软件等。本以为不会与其有太多交集。我下决心学习matlab是在经历几件事情之后。当时,在做硕士论文时需要对电泳图片做微生物种群的多样性分析和相似性分析,当时手头的软件只能将电泳图转化为各个泳道的灰度和位置方面的数据,而不能对数据进行分析,而能进行这样分析的软件(Bionumerics)比较贵,只为了这个用几次而买显然很不划算。无奈之下,我查了些文献,了解计算的原理后便用比较熟悉的matlab编程解决这个问题,其实这个程序比较简单--DGGE中条带Shannon多样性指数的计算,在现在看来,根本不值一提,但是在当时自我感觉还是不错的,相当有成就感了。后来在课程(数值分析,微分方程数值解)中matlab经常用到,另外在帮师姐做管理方面的数学模型时用的比较多,便自学了相关方面的知识,主要是看书,自己编程还有上网交流,这时在百度上回答了很多matlab相关的问题,并成为百度matlab技术论坛的副团长,在emuch中蒙前计算模拟区区长cenwanglai 看重,聘为计算模拟版的版主。Matlab涉及的方面非常广,下面我就自己的理解谈下matlab 一些特点和我学习matlab的一点体会,希望能对大家有点帮助,有什么不对的地方,敬请指正! 2.matlab的一些特点 A.Matlab是一个基于矩阵运算的软件,这恐怕是众所周知的事情了,但是,真正在运用的时候(就是在编程的时候),许多人(特别是初学者)往往没有注意到这个问题,因此,for 循环(包括while循环)嵌套了十几层,这不仅是暴殄天物(没有发挥matlab所长),还浪费了你宝贵的时间,就只见左下角一直busy。 B.友好的界面,易于操作,虽然matlab一打开总看到命令行窗口,其实matlab有很多

Matlab学习心得系列——002.Matlab编程思想——向量化编程

2.Matlab 编程思想——向量化编程 C 语言的基本元素是单数值(比如单变量或数组里的元素),再加上 其结构化的特点,决定了通常 C 语言程序大都充斥着大量罗嗦的单变量循环和判断语句(注 1)。 而 Matlab 是以向量、矩阵为基本元素的,所以要编写真正的 Matlab 程序必须抛弃【 C 语言那种“单数值、元素化”考虑问题】的思路,转以向量、矩阵为最小单位来考虑问题。也就是说, Matlab 的编程思想是——向量化编程,即面向向量或矩阵。 这样做的好处,至少有两个: (1)代码大大简化,易编程、清晰可读性强; 这样的代码才叫Matlab 代码,否则只能是不伦不类的代码:C 不 C,Matlab 不 Matlab. (2)执行效率也更高; 这是次要的,随着 Matlab 对循环机制的优化,速度差异已不再 那么明显,关键是( 1)

下面针对 Matlab 中常见的向量化处理问题方法,举例加以说明:(一)整体操作“大块数据” Matlab 为同型的数据块(向量或矩阵)的整体做运算提供了【点 运算】,这里我借用《线性代数》里的说法,矩阵行数、列数相同 称为同型矩阵, Matlab 里矩阵可能不止 2 维。 比如, A.*C 和 A./C 表示 A 与 C的对应位置的各元素做* 和 /运算得到与它们同型的一个新矩阵。 例1.物理实验利用测得的电压电流具体数据,验证欧姆定律R=U/I. 代码 1(C语言风格) U = [0.89, 1.20, 3.09, 4.27, 3.62, 7.71, 8.99, 7.92, 9.70, 10.41]; I = [0.028,0.040,0.100,0.145,0.118,0.258,0.299,0.257, 0.308, 0.345]; L = length(U); S=0; for k = 1:L R(k) = U(k)/I(k); S = S + R(k); end R=S/L 运行结果: R = 30.5247

(图论)matlab模板程序

(图论)matlab模板程序

第一讲:图论模型 程序一:可达矩阵算法 %根据邻接矩阵A(有向图)求可达矩阵P(有向图) function P=dgraf(A) n=size(A,1); P=A; for i=2:n P=P+A^i; end P(P~=0)=1; %将不为0的元素变为1 P; 程序二:无向图关联矩阵和邻接矩阵互换算法F表示所给出的图的相应矩阵 W表示程序运行结束后的结果 f=0表示把邻接矩阵转换为关联矩阵 f=1表示把关联矩阵转换为邻接矩阵 %无向图的关联矩阵和邻接矩阵的相互转换 function W=incandadf(F,f) if f==0 %邻接矩阵转换为关联矩阵 m=sum(sum(F))/2; %计算图的边数 n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; %给边的始点赋值为1 W(j,k)=1; %给边的终点赋值为1 k=k+1; end end end elseif f==1 %关联矩阵转换为邻接矩阵 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); W(a(1),a(2))=1; %存在边,则邻接矩阵的对应值为1 W(a(2),a(1))=1;

end else fprint('Please imput the right value of f'); end W; 程序三:有向图关联矩阵和邻接矩阵互换算法 %有向图的关联矩阵和邻接矩阵的转换 function W=mattransf(F,f) if f==0 %邻接矩阵转换为关联矩阵 m=sum(sum(F)); n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 %由i发出的边,有向边的始点 W(i,k)=1; %关联矩阵始点值为1 W(j,k)=-1; %关联矩阵终点值为-1 k=k+1; end end end elseif f==1 %关联矩阵转换为邻接矩阵 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); %有向边的两个顶点 if F(a(1),i)==1 W(a(1),a(2))=1; %有向边由a(1)指向a(2) else W(a(2),a(1))=1; %有向边由a(2)指向a(1) end end else fprint('Please imput the right value of f'); end W;

matlab学习心得体会(精选3篇)

matlab学习心得体会(精选3篇) matlab学习心得体会一:matlab学习心得matlab中有丰富的图形处理能力,提供了绘制各种图形、图像数据的函数。他提供了一组绘制二维和三维曲线的函数,他们还可以对图形进行旋转、缩放等操作。matlab内部还包含丰富的数学函数和数据类型,使用方便且功能非常强大。 本学期通过对matlab的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计算及符号运算的学习,初步掌握了matlab的实用方法。通过理论课的讲解与实验课的操作,使我在短时间内学会使用matlab,同时,通过上机实验,对理论知识的复习巩固实践,可以自己根据例题编写设计简单的程序来实现不同的功能,绘制出比较满意的二维三维图形,在实践中找到乐趣。 matlab是一个实用性很强,操作相对容易,比较完善的工具软件,使用起来比较方便,通过操作可以很快看到结果,能够清晰的感觉到成功与失败,虽然课程中也会出现一些小问题,但是很喜欢这门课程。 matlab学习心得体会二:matlab学习心得(463字) 学习matlab是听说它是一个功能强大的数学软件,但是正被微积分的计算缠身,听说有一个高级的计算器当然高兴,以后可以偷懒了,当然现在不能偷懒。听说关于自动化的计算特别复杂,如果有一种软件能帮忙解题,那是一种极大的解脱,有益于缩短研究时间。目前我只知道有三种数学软件,都是国外的,没有国内的,差距挺大的。matlab学起来挺顺手的,比c语言简单。但是深入学习的时候却困难重重,因为很多知识都没有学习,就算知道那些函数,也没有什么用处。老师布置的作业难度大,写一篇实验,大一什么都不会,写一篇这种论文谈何容易。最多也就会一些数值计算、符号计算、简单绘图,根本不会什么实验。 学习matlab体会最多的是这个软件的功能强大,好多数学题都被轻易的解出。但是有一点遗憾,不知是我不会用,还是它没个功能,已知空间的电荷分布,求空间的电场分布。其中电场分布是无法用函数表达式表示。我知道计算机肯定可以实现,但是这个软件能不能实现就不知道了,我看过许多资料,但是在这方面没有提到相关信息。 总之,这个软件功能强大,不知什么时候国内才有类似的软件。 matlab学习心得体会三:学习matlab的心得(817字) 这是我在学习的过程中的一些技巧,或许对你有帮助,可能字数不你能满足你的要求,但是绝对是精华。

基带信号眼图实验——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 学习笔记

Matlab教程 命令+指定参数 表3-1 3.3 数据交换系统 MATLAB提供了多种方法将数据从磁盘或剪贴板中读入MATLAB工作空间。具体的读写方法可依据用户的喜好以及数据的类型来选择。这里主要介绍文本数据的读入。 对于文本数据(ASCII)而言,最简单的读入方法就是通过MATLAB的数据输入向导(Import Wizard),也可以通过MATLAB函数实现数据读入。 例如,对于文本文件test.txt: students’ scores English Chinese Mathmatics Wang 99 98 100 Li 98 89 70 Zhang 80 90 97 Zhao 77 65 87 下面通过上述两种方法将该文件数据读入MATLAB工作空间,先介绍MATLAB数据交换系统对文本数据的识别。此时文件的前几行(此处为“students’ scores”)将被识别为文件头,文件头可以为一行或几行,也可以识别出数据的列头(此处为:“English”、“Chinese”、和“Mathmatics”)和行头(此处为“wang”、“li”、“zhang”和“zhao”),其余的为可分断数据(此处为“99”、“98”、和“100”等)。 首先是通过数据输入向导编辑器读入数据,通过桌面平台上的【File】菜单中的【Import Data】选项打开输入向导编辑器,按向导提示进行操作完成整个文本数据的输入,则用户可以在MATLAB开发环境中使用该文本数据。 例如: >>whos Name Size Bytes Class Data 4 3 96 double array Grand total is 12 elements using 96 bytes >>Data Data = 9998 100 9889 70

图论算法及matlab程序的三个案例

图论实验三个案例 单源最短路径问题 Dijkstra 算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合S 当且仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记()l v 为顶点 v 到源点v 1的最短距离, ,i j v v V ?∈,若 (,)i j v v E ?,记i v 到j v 的权ij w =∞。 Dijkstra 算法: ① 1{}S v =,1()0l v =;1{}v V v ??-,()l v =∞,1i =,1{}S V v =-; ② S φ=,停止,否则转③; ③ ()min{(),(,)} j l v l v d v v =, j v S ∈,v S ?∈; ④ 存在 1 i v +,使 1()min{()} i l v l v +=,v S ∈; ⑤ 1{} i S S v +=, 1{} i S S v +=-,1i i =+,转②; 实际上,Dijkstra 算法也是最优化原理的应用:如果12 1n n v v v v -是从1v 到 n v 的最短路径,则 12 1 n v v v -也必然是从1v 到 1 n v -的最优路径。 在下面的MATLAB 实现代码中,我们用到了距离矩阵,矩阵第i 行第j 行元 素表示顶点i v 到j v 的权ij w ,若i v 到j v 无边,则realmax ij w =,其中realmax 是 MATLAB 常量,表示最大的实数+308)。 function re=Dijkstra(ma)

信号与系统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实现

图论与网络优化课程设计 四种基本网络(NCN、ER、WS、BA) 的构造及其性质比较 摘要:网络科学中被广泛研究的基本网络主要有四种,即:规则网络之最近邻耦合网络(Nearest-neighbor coupled network),本文中简称NCN;ER随机网络G(N,p);WS小世界网络;BA无标度网络。本文着重研究这几种网络的构造算法程序。通过运用Matlab软件和NodeXL网络分析软件,计算各种规模下(例如不同节点数、不同重连概率或者连边概率)各自的网络属性(包括边数、度分布、平均路径长度、聚类系数),给出图、表和图示,并进行比较和分析。 关键字:最近邻耦合网络;ER随机网络;WS小世界网络;BA无标度网络;Matlab;NodeXL。

四种基本网络(NCN、ER、WS、BA) 的构造及其性质比较 1.概述 1.网络科学的概述 网络科学(Network Science)是专门研究复杂网络系统的定性和定量规律的一门崭新的交叉科学,研究涉及到复杂网络的各种拓扑结构及其性质,与动力学特性(或功能)之间相互关系,包括时空斑图的涌现、动力学同步及其产生机制,网络上各种动力学行为和信息的传播、预测(搜索)与控制,以及工程实际所需的网络设计原理及其应用研究,其交叉研究内容十分广泛而丰富。网络科学中被广泛研究的基本网络主要有四种,即:规则网络之最近邻耦合网络(Nearest-neighbor coupled network),本文中简称NCN;ER随机网络G(N,p);WS小世界网络;BA无标度网络。本文着重研究这几种网络的构造算法程序。计算各种规模下(例如不同节点数、不同重连概率或者连边概率)各自的网络属性(包括边数、度分布、平均路径长度、聚类系数),给出图、表和图示,并进行比较和分析。 2.最近邻耦合网络的概述 如果在一个网络中,每一个节点只和它周围的邻居节点相连,那么就称该网络为最近邻耦合网络。这是一个得到大量研究的稀疏的规则网络模型。 常见的一种具有周期边界条件的最近邻耦合网络包含围成一个环的N个节点,其中每K个邻居节点相连,这里K是一个偶数。这类网络的一个重要特征个节点都与它左右各/2 就是网络的拓扑结构是由节点之间的相对位置决定的,随着节点位置的变化网络拓扑结构也可能发生切换。 NCN的Matlab实现: %function b = ncn(N,K) %此函数生成一个有N个节点,每个节点与它左右各K/2个节点都相连的最近邻耦合网络 %返回结果b为该最近邻耦合网络对应的邻接矩阵 function b = ncn(N,K) b=zeros(N); for i = 1:N for j = (i+1):(i+K/2) if j<=N b(i,j)=1; b(j,i)=1; else b(i,j-N)=1;

Matlab的gui界面设计实例练习

一个不错的Matlab的gui界面设计实例 %非常漂亮的日历, function CalendarTable; % calendar 日历 % Example: % CalendarTable; S=datestr(now); [y,m,d]=datevec(S); % d is day % m is month % y is year DD={'Sun','Mon','Tue','Wed','Thu','Fri','Sat'}; close all figure; for k=1:7; uicontrol(gcf,'style','text',... 'unit','normalized','position',[0.02+k*0.1,0.55,0.08,0.06],... 'BackgroundColor',0.6*[1,1,1],'ForegroundColor','b',... 'String',DD(k),'fontsize',16,'fontname','times new roman'); end h=1; ss='b'; qq=eomday(y,m); for k=1:qq; n=datenum(y,m,k); [da,w] = weekday(n); if k==d; ss='r'; end uicontrol(gcf,'style','push',... 'unit','normalized','position',[0.02+da*0.1,0.55-h*0.08,0.08,0.06],... 'BackgroundColor',0.6*[1,1,1],'ForegroundColor',ss,... 'String',num2str(k)); ss='b'; if da==7; h=h+1;

实验一----信号的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学习笔记

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 "\frac{\pi}{3}$)". >> 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 时,曲面函数必须能写成显函数的形式,如sin()/()Z xy xy = %可以使用@(x,y )+函数表达式 定义匿名函数,如@(,)sin(*)/(*)z x y 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;

相关文档