文档库 最新最全的文档下载
当前位置:文档库 › MATLAB学习笔记整理

MATLAB学习笔记整理

MATLAB学习笔记整理
MATLAB学习笔记整理

MATLAB笔记摘录:

1、clc 命令清空命令窗口(The Command Windows)中的内容,可以用clf 清空当前图象窗口中的内容。在工作空间窗口(The workspace browser)中变量可用clear命令清除。

2、能用diary 命令记录下在MATLAB 中运行过程中每个线程所做的事。

3、常见编程错误如果变量名与MATLAB 中的函数或命令重名,那么这个函数或命令将不能被访问。

4、常见编程错误不要创建和MATLAB 内建函数或命令同名的M 文件。

5、—which 命令,它能帮助我们找到正在执行的文件版本和它的路径。

6、命令窗口是最重要的窗口,因为所有的命令都得在此键入,所有的结果在此输出

7、MATLAB 的变量名必须以字母开头,后面可以跟字母,数字和下划线(_).只有前31 个字符是有效的;如果超过了31 个字符,基余的字符将被忽略。如果声明两个变量,两变量名只有第32 个字符不同,那么MATLAB 将它们当作同一变量对待

8、像MATLAB 这样的叫做弱类型语言。通过简单的赋值形式就可以创建变量,变量类型取决于创建时的类型。

9、。有三种方式初始化MATLAB 中的变量:

1.用赋值语句初始化变量

2.用input 函数从键盘输入初始化变量

3.从文件读取一个数据

10、克隆运算符指定一系列的数值,它指定了这个系列数的第一值,步增和后一个值。它的一般顺序始下first:incr:last

11、捷径表达式可以联合转置运算符(’)来初始化行向量,或更加复杂的矩阵

12、函数zeros 可以初始化任何大小的全为零的数组。相似地,ones 函数产生的数组包含的元素全为1,eye 函数通常用来产生单位矩阵,只有对角线的元素为1.其他元素为0. 13、input 函数中有字符's'做为它的第二个参数,输入的数据就被当字符串. in2=input('enter data:','s') enter data:123 把字符串1.23 存储到in2 中.

14、.数组,矩阵,向量有什么区别?

答:矩阵是二维数组,向量是一维数组,矩阵和向量是数据的子集。

15、在数组名后面加括号,括号里面是所有要选择的元素的下标,这样就能选择这个函数的子集了

16、二维数组为例:arr[1,:]取数组的子集;arr[1,2]取具体的元素;

17、format 包括两方面的内容,一方面是打印内容的文本的提示;另一方面是打印的格式。

18、fprintf 函数有一个重大的局限性,只能显示复数的实部。。当我们的计算结果是复数时,这个局限性将会产生错误。在这种情况下,好用disp 显示数据。

19、如果数据需要在matlab 和其他程序之间交换使用,那么以ASCII 格式存储数据。如果只在matlab 中使用那么,应以mat 文件的形式存储数据。

20、以“dat”的扩展名保存ASCII 数据文件,以区别于以“mat”为扩展名的mat 文件。

21、filename 代表你要保存变量的那个文件,var1,var2 等是要保存的变量。在默认情况下,这个这个文件的扩展名为‘mat’,我们称之为MAT 文件。如果在filename 后面无变量,则工作区的所有内容将会被保存。

22、MATLAB 在数组运算中提供了两种不同类型的运算,一种是数组运算(array operations), 一种是矩阵运算(matrix).数组运算是一种用于元素对元素的运算. .当一个数组和一个标量进行运算时,标量将会和数组中的每一元素进行运算. 相对地,矩阵运算则遵守线性代数的一

般规则

23、MATLAB 用一个特殊的符号来区分矩阵运算和数组运算。在需要区分两者不同的时侯,把点置于符号前来指示这是一个数组运算(例如,.*)。数组运算符.*,.^和./

24、[maxval index] = max ([1 -5 6 -3]) 将会产生结果maxval=6,和index=3.

25、一个重要的选项是-dtiff.这个选项指定输出图片的格式是标签影像档案格式(TIFF)。

26、下面这个命令将会创建一个TIFF 格式的当前图象的图片,并保存在一个叫my_image.tif 的文件中print –dtiff my_image.tif 。你也可以选择图象窗口中的“file/export”选项来创建tiff 图片。

27、我们可以用legend 来制作图例。它的基本的形式如下:legend('string1','string2',...,pos) 其中string1,string2 等等是与轨迹标签名,而pos 是一个整数,用来指定图例的位置。用legend off 命令将能去除多余的图例。

28、打印数据既可以用对数尺度,也可以用线性尺度:

1.plot 函数的x,y 均用线性尺度

2.semilog 函数x 轴用对数尺度,y 轴将用线性尺度

3.semiloge 函数x 轴用线性尺度,y 轴用对数尺度

4.loglog 函数两坐标轴将会都用对数尺度。

29、在MATLAB中有三种类型的错误:

1.语法错误:缺括号等

2.运行错误:当一个非法的数学运算出现在程序的过程(例如,除以0),将会出现

运行时错误。这些错误将会使程序返回Inf 或NaN

3.逻辑错误:指编译和运行都能通过,而产生了错误的结果。

30、养成好的编程习惯:

1. 尽可能的使用有意义的变量名,一眼就可以看懂,像day,month,year.

2. 给每一个程序创建一个数据字典,以提高程序的可维护性.

3. 变量名一律用小写字母,这样可以不会因大小写不同而造成变量混淆。

4. 在所有的MATLAB 赋值语句的后面加上一个分号,用来禁止赋值的重复.在程序

调试期间,如果你检验某个语句的值,可去掉语句后的分号.

5. 如果要在MATLAB和其他程序之间交换数据,那么就要以ASCII 格式存储数据.

如果数据只应用在此MATLAB 中那么,应以mat-file 格式存储数据.

6. 以”dat”为扩展名保存ASCII 数据以区分MAT 文件,MAT 文件的扩展名为

mat.

7. 用适当的括号使你的表达式清晰,易理解.

8. 当你读取和写入数据时,使用适当的单位

32、有两大类控制顺序结构:选择结构,用选择执行特定的语句;循环结构,用于重复执行特定部分的代码。

33、程序设计的基本步骤如下:

1.清晰地陈述出你要解决的问题。

2.确定程序所需地输入量和程序所产生的输出量。

3.为你的程序设计算法(伪代码)

4.将算法转化为MATLAB 语句

5.调试MATLAB 程序

34、有两种形式的运算符可以在MATLAB 中关系得到true/false:关系运算符和逻辑运算符。跟C 语言一样,MATLAB 没有布尔型和逻辑数据类型。MATLAB 把0 值作为结果false,把所有的非0 值作为结果ture。

35、关系运算符也可用于标量与数组的比较。关系运算符也可比较两个数组,只要两个数组具有相同的大小。关系运算符也比较两个相同长度的字符串

36、符号==是一个比较运算符,返回一个逻辑数,而符号=是将等号右边的表达式的值赋给左边的变量

37、如果它为0,则其为false。所以~5 的结果为0,~0 的结果为1。

38、标量和数组之间也可进行逻辑运算。两数组之间也可进行逻辑运算,只要它们具有相同的大小。

39、逻辑运算在所有的数学运算和关系运算之后进行。数学运算符>关系运算符>逻辑运算符

40、表达式中的运算顺序如下:

1.所有的数学运算按照前面描述的顺序的进行。

2.从左向右依次进行关系运算

3.执行所有~运算

4.从左向右依次进行&运算

5.从左向右依次进行|运算和数学运算一样,括号能够改变括号的默认顺序。

41、选择结构在MATLAB 中有三种具体的形式:if 结构,switch结构和try/catch结构。

42、对于有许多选项的选择结构来说,好在一个if 结构中使用多个elseif 语句,尽量不用if 的嵌套结构。

43、注意只有带有字符参数的函数才能当作命令。带有数字参数的函数只能被当作函数。

44、在同一坐标系内画出多个图象:

1.当hold on 命令执行后,所有的新的图象都会叠加在原来存在的图象。hold off

命令可恢复默认情况,用新的图象来替代原来的图象。

2.我们用figure 函数来选择当前窗口。这个函数的形式为“figure(n)”,其中n 代

表图象数。当这个函数被执行后,图n 将会变为当前图象,执行所有的画图命令。

3.gcf 函数用于当于返回当前图象数。

4. subplot 命令允许程序在一个图象窗中创建多个子图象。

45、文本的字体通可以通过stream modifiers 修改。一个stream modifier 是一个特殊的字符序列,用来告诉编译器改变它的行为。

46、一旦一个stream modifier 插入一个文本字符串中,它持续发挥作用,直到这个字符串的结束或消失。如果一个modifier 后在跟着一个{},只有{}中的文本起作用。

47、如果要打印转义符\,{,},_,或^就必须在前面加上一个反斜杠

48、Matlab 中包括一个重要的函数叫做polar,它用于在极坐标系中画图。这个函数的基本形式如下: polar(theta,r)

49、

50、设置断点:我们可以用鼠标右击你所关心的行并选择”set/clear breakpoint”选项。

51、一旦到达某个断点程序员可以通过在命令窗口中键入变量名的方法检查或修改在工作区内的任一变量。当程序员对程序的这一点感到满意时,可以通过重复按F10 一行一行调试,也可以按F5 运行到下一个断点。它总是能检测程序中的每一个断点中的任何一个变量的值。

52、这个菜单包括两个项目:“stop if Error”和“stop if warning”

53、axis 命令允许程序员指定X,Y 轴的取值范围

54、循环结构有两种基本形式:while 循环和for 循环。

55、其中index 是循环变量(就是我们所熟知的循环指数),exp 是循环控制表达式。变量index 读取的是数组expr 的行数,然后程序执行循环体(loopbody),所以expr 有多少列,

循环体就循环多少次。expr 经常用捷径表达式的]方式,即first:incr:last。

for index = expr (1:n)

Statement 1 ...

Body Statement n

End

注意:在循环体在后一次执行后,循环系数将会一直为n。循环指数可以为向量。

56、每一次扩展数组,都要经过以下步骤:

第一步,创建一个新数组。

第二步,把旧数组的元素复制到新数组当中。

第三步,把扩展的元素写入新数组。第四步,删除旧数组。对于大数组来说这些

步骤是相当耗时的。

57、向量算法的缺点是需要很大的内存,因为一些间接的数组需要创建。这经常是一小点损失,所以要比for 循环算法好的多。在matlab 中,用向量算法代替循环的算法的过程称之为向量化(vectorization)。向量化能够改进许多的matlab 程序。

注意:那种既可以用向量可以解决的问题,也可以用循环解决的问题,好用向量解决,这是因为向量执行的速度快。

58、:break 和continue 语句。break 语句可以中止循环的执行和跳到end 后面的第一句执行,而continue 只中止本次循环,然后返回循环的顶部

59、如果你要利用那些没有被选择到的元素进行运算,只需要在逻辑屏蔽上加一个非运算符(-)

60、for kk=[0,5;3,3],一次循环一个列向量,第一次循环kk=[0;3],第二次循环kk=[5;3]

61、size(a,1)是矩阵a的行数,size(a,2)表示矩阵a的列数

62、单次执行一段代码所消耗的时间有一定的偶然性,maxcount的作用是把循环体的代码重复执行多次,然后取平均值,以尽量消除偶然性因素的影响

63、逻辑数组有一个重要的属性——它在算术运算中能提供一个屏蔽(mask)。屏蔽(mask)是指一个数组,它从另一个数组选择所需的元素参与运算。指定的运算只在选择的元素上执行,而不执行原有的元素。

64、\bf 黑体

\it 斜体

\rm 恢复正常字体

\fontname 字体的名字

\fontsize 字体的大小

_{xxx}xxx 做为某字符的上标

^{xxx}xxx 做为某字符的下标

65、一个数组的逻辑属性可以通任何的数学运算去除;用logical 函数给一个数组加上一个逻辑属性。

66、function [outarg1, outarg2, ...] = fname(inarg1, inarg2, ...)

function 语句标志着这个函数的开始。它指定了函数的名称和输入输出列表。输入

函数列表显示在函数名后面的括号中。输出函数列表显示在等号左边的中括号中。

(如果只有一个输出参数,中括号可以省略。)

67、绘图

y 黄色. 点- 实线m 品红色o 圈: 点线 c 青绿色x ×号-. 画点线r 红色s 正方形-- 虚线g 绿色 d 菱形

颜色标记类型线型

b 蓝色v 倒三角w 白色^ 正三角k 黑色> 三角(向右) < 三角(向左) p 五角星h 六线形

68、MATLAB特殊符号及说明:(53)

69、程序调试(89)

1.设置断点

2.运行程序

3.F10 按程序一步步执行

4. 按F5 运行到下一个断点

5.F11 进入函数一步步调试

70、maltab 程序与它们函数之间的交互用是按值传递机制。当一个函数调用发生时,MATLAB 将会复制实参生成一个副本,然后把它们传递给函数。这次复制是非常重要的,因为它意味着虽然函数修改了输入参数,但它并没有影响到调用者的原值。这个特性防止

了因函数修改变量而导致的意想不到的严重错误

71、选择性参数

nargin 这个函数返回调用这个函数时所需要的实际输入参数的个数

nargout 这个函数返回调用这个函数时所需要的实际输出参数的个数

nargchk 如要一个函数调用被调用时参数过多或过少,那么nargchk 函数将返回一个标准错误信息error 显示错误信息,并中止函数以免它产生这个错误。如果参数错误是致命的,这个函数将会被调用。

warning 显示警告信息并继续执行函数,如果参数错误不是致命的,执行还能继续,则这个将会被调用。

inputname 这个函数将会返回对于特定参数个数的实际变量名。

72、脚本文件与函数的区别:

函数:程序部分的独立检测,代码的可复用性,避免意想不到的错误。脚本文件:把每一个子问题产生的MATLAB 代码嵌入到一个单独的大程序中。在嵌入之前我们无法对每一次子问题的代码进行独立地验证和测试

脚本文件是保存在文件中的MATLAB 语句集合。脚本文件共享命令窗口工作区,所以任何之前运行的脚本文件中定义的变量都能被当前脚本文件使用,脚本文件定义的变量在文件执行之后还保留在工作区中。脚本文件没有输入参数,也没有输出参数,不过脚本文件之间可以通过工作区交换数据。相反,每一个MATLAB 函数运行在它自己的独立工作区,函数通过输入参数列表获取输入数据,通过输出参数列表给调用者返回数据。73、函数通过输入参数列表(input argument list)从程序中读取输入值,通过输出参数列表(output argument list)给程序返回结果

74、自定义函数的help 命令是如何工作的?

答:help 命令显示某个函数的所有注释行,直到遇到空白注释行或执行语句为止。

75、函数中的H1 注释行有什么重要性?

答:它应当是对本函数功能的总结。这一行的重要性在于,通过lookfor 命令它能被搜索到并显示出来。从H1 注释行到第一个空行或第一个可执行性语句可以通过help 命令或帮助窗口搜索到。它们则应包含如何使用这个函数的简单总结。

H1 注释行是文件中注释的第一行,这一行可以被lookfor 命令搜索并显示。应该把该函数的用途摘要写在这一行中。

76、什么是按值传递机制?它对结构化编程有什么好处。

实参传递给形参的过程,不会修改调用函数的变量值。MATLAB中按值传递,值可以是标量、数据

在值传递机制中,每个输入参数的副本而不是参数本身从调用者传递给函数。这样设计可以避免输入数据在函数内被自由的修改,这可能并不是调用者实际上需要的,因而也为设计好程序提供保证。

77、如何使MATLAB 函数带有选择性参数?

(见71)

78、全局变量(占用的是全局内存,而不是本地工作区)的声明要用到global 主语句,基本形式如下

global var1 var2 var3 ...

其中var1,var2,var3 等等是用全局内存的变量。为了方便,全局变量将在函数开头被声明,但是实际上没有这个必要。

79、在函数中的初始注释行之后和第一个可执行性语句之前声明全局变量

80、随机数种子不同产生不同的结果,种子同时,结果同。不设置种子,每次取的随机数相同。

81、持久变量应用语句声明。它的形式如下:

persistent var1 var2 var3 ... var1,

var2,var3...是存储于持久内存中的变量。

82、常见的函数的函数:

fminbnd 求函数的最小值,这函数只有一个自变量

fzero 找出函数为0 时的自变量的值

quad 在数学上组合一个函数

ezplot 简单易用的函数画图

fplot 通过函数名画出这个函数的图象

83、函数feval 对在M 文件进行定义的命名函数进行求值,要求有指定的输入值。函数feaval 的基本形式如下

feval(fun, value).

84、函数的函数操作的关键字有两个专门的maltab 函数,eval 和feval。。函数eval 对一个字符串进行求值,就如它在命令窗口中已经键入了一样。函数feval 用一个特定的输入值对命名的函数进行求值。

85、好的编程习惯:

1.把大的程序分解小的,易于理解的函数

2.在M 文件的开头声明全局变量。以区分本地变量

3.在函数中的初始注释行之后和第一个可执行性语句之前声明全局变量

4.全局变量适用大规模数据的传输(global)

5.在两次函数调用之间有持久内存保存本地数据。(persistent)

6.用子函数或私有函数来隐藏特殊目的的函数,这些隐藏的函数只能被其他函数调

用。隐藏这些函数防止了它们偶然的使用,也能防止与其他公共函数重名时发生的冲突。

86、关系运算符>,<,<=或>=只比较复数的实部,而不是它们的模。

87、我们可以利用char 函数把double 型数据转化为字符型数据。我们可以利用double 函数把变量从字型转化为double 型。

88、创建二维字符数组,但一个数组中每一行的长度都必须相等。应用deblank 函数去除多余空格。

>> line2 = name(2,:)

line2 = Senior Engineer

>> line2_trim = deblank(name(2,:))

line2_trim = Senior Engineer

>> size(line2)

ans = 1 18

>> size(line2_trim) ans = 1 1

89、函数strcat 水平连接两字符串,忽略所有字符串末端的空格,而字符串的空格保留。函数strvcat 用于竖直地连接两字符串,自动地把它转化为二维数组。

你可以利用MATLAB 函数比较两字符串整体是否相同。它们是:

strcmp 判断两字符串是否等价

strcmpi 忽略大小写判断两字符串是否等价

strncmp 判断两字符串前n 个字符是否等价

strncmpi 忽略大小写判断两字符串前n 个字符是否等价

90、函数strtok 返回输入字符串中第一次出现在分隔符前面的所有字符。默认的分隔符为一系列的空白字符

[token, remainder] = strtok(string,delim)

其中string 是输入字符串,delim 是可选择的分隔符,token 代表输入字符串中第一次出现在分隔符前面的所有字符,remainder 代表这一行的其余部分。

>> [token, remainder] = strtok('This is a test!')

token = This

remainder = is a test!

91、大小写转换:

函数upper 和lower 分别把一个字符串中所有转化大定和小写

注意在大小转换时,数字和符号不受影响。

92、MATLAB 把由数字组成的字符串转化为数字要用到函数eval。

字符串可以用sscanf 函数转化为数字。这个函数根据格式化转义字符转化为相应的数字。这个函数简单的形式如下

value = sscanf(string, format)

其中,string 是要转化的字符串,format 是相应的转义字符。函数sscanf 两种普通的转义序是“%d”,“%g”,它们分别代表输出为整数或浮点数

93、MATLAB 中有许多的字符串/数字转换函数把数字转化为相应的字符串

函数num2str 为输出字符串的格式提供更多的控制。第二个可选择的参数可以对输出字符串的数字个数进行设置或指定一个实际格式。例如

>> p = num2str(pi,7)

p = 3.141593

>> p = num2str(pi,'%10.5e')

p = 3.14159e+000

94、函数int2str 和num2str 对作图标签是非常有用的。例如,下面的语句用num2str 生成图象的标签。

function plotlabel(x,y)

plot(x,y)

str1 = num2str(min(x));

str2 = num2str(max(x));

out = ['Value of f from ' str1 ' to ' str2];

xlabel(out);

95、MATLAB 函数mat2str 可以把一个数组转化为相应的MATLAB 能运算字符串。

96、

97、message = nargchk(min_args, max_args, num_args);

其中min_args 是指参数的最小个数,max_args 是指数的最大个数,num_args 是指参数的实际个数。如果参数的个数不在允许的范围,将会产生一个标准的错误信息。如果参数的个数在允许的范围之内,那么这个函数将返回一个空字符。

98、

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;

相关文档