Matlab常见语法错误

Matlab常见语法错误
Matlab常见语法错误

Matlab常见语法错误

Subscript indices must either be real positive integers or logicals

中文解释:下标索引必须是正整数类型或者逻辑类型

出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。

解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。关于矩阵的各种访问方式。

举例:

【错误代码】:

1.for s = 0:0.2:2

2. a(s) = 4 * s - 1;

3.end

复制代码

【正确代码】:

1.

2.for s = 1:10

3. a(s) = 4 * s - 1;

4.end

复制代码

当然,这样的赋值使用循环是低效的,因此不提倡

Undefined function or variable "a"

中文解释:函数或变量 a 没有定义

出错原因及解决办法:

1. 如果 a 是变量,则参见[原创]写给学习 matlab 的新手们一贴中技巧 6 后半部分

2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m 文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看)

举例:

myPlus.m:

1.function d = myPlus(a,b)

2. d = a + b;

复制代码

【错误调用】:

命令窗口:

1.>> z = myPlus(a,b)

复制代码

【正确调用】:

命令窗口:

1.>> x = 2;

2.>> y = 5;

3.>> z = myPlus(x,y)

复制代码

Input argument "x" is undefined

中文解释:输入变量 x 没有定义

出错原因及解决方法:参见[原创]写给学习 matlab 的新手们一贴中技巧 6 举例:

1.function y = myTest(x)

2.y = x * 2;

复制代码

【错误调用】:

直接在m文件编辑窗口运行程序,或者命令窗口:

1.>>a = myTest;

复制代码

【正确调用】:

1.>>b = 4;

2.>>a = myText(b);

复制代码

Matrix dimensions must agree

Inner matrix dimensions must agree

中文解释:矩阵的维数必须一致

出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。matlab 通过“.”来区分矩阵运算和元素运算,对此可以参阅:[原创]写给学习 matlab 的新手们一贴中技巧 1

解决办法:自己调试一下程序,保证运算符两边的运算对象维数一致

举例:

【错误代码】:

1. b = [1,2];

2. a = [-1,1];

3. c = a*b;

复制代码

【正确代码】:

1.

2. b = [1,2];

3. a = [-1,1];

4. c = a.*b;

复制代码

Attempt to execute SCRIPT conv as a function

出错原因及解决办法:参见[原创]写给学习 matlab 的新手们一贴中技巧 2

如果经过上述检测后仍然出现错误,则请把 m 文件的路径设置为常规的试试,即不使用中文的路径、不使用数字作为m文件名的开头等等

Function definitions are not permitted at the prompt or in scripts

中文解释:不能在命令窗口或者脚本文件中定义函数

出错原因:一旦在命令窗口写 function c = myPlus(a,b),此错误就会出现,因为函数只能定义在 m 文件中。关于脚本文件和 m 文件的区别请查阅matlab基础书。简言之:

1) 如果你写成 function 的形式,那么必须写在 m 文件中,且以 function 开头(即function 语句前不能包含其他语句,所有语句必须放在 function 中,当然,function 的定义可以有多个,各 function 之间是并列关系,不能嵌套);

2) 如果你写成脚本的形式,则既可以写在命令窗口中,也可以写在 m 文件中,但两者均不能包含 function 语句(即不能进行函数的定义)

解决办法:新建一个 m 文件,然后再进行函数的定义

1. X must have one or two columns

2. Vectors must be the same lengths

中文解释:

1.X 必须是 1 或者 2 列

2. 向量长度必须一致

出错原因:

1. 实际输入不满足该条件。至于如何判断矩阵的行、列,请参阅高等代数或者 matlab 的基础书籍

2. 输入的两个(或几个)变量长度不满足该条件。例如 plot 函数的前两个输入变量,如果一个是1*2,另一个是1*3,则会出错

解决方法:都需要自己调试一下

1. 把 X 的维数改为 1 或者 2 列

2. 按照函数的语法要求把向量的长度设置为一样

举例:

【错误代码】:

1. a = [-1,-2,-3];

2. b = [1,2];

3.plot(a,b);

复制代码

【正确代码】:

1.

2. a = [-1,-2];

3. b = [1,2];

4.plot(a,b);

复制代码

One or more output arguments not assigned during call to '...'

中文解释:在调用...函数过程中,一个或多个输出变量没有被赋值

出错原因:函数如果带有输出变量,则每个输出在返回的时候都必须被赋值。容易出现这个错误的两个地方是:

1) 在部分条件判断语句(如 if )中没有考虑到输出变量的返回值。例子:多输入多输出报错

2) 在循环迭代过程中部分变量的维数发生了变化。例子:请几位版主看看这个程序什么错误

解决办法:调试程序,仔细查看函数返回时各输出变量的值。更好的方法是:在条件判断或者执行循环之前对所使用的变量赋初值

??? Error using ==>mpower

Matrix must be square

中文解释:错误使用mpwoer函数,要求矩阵必须是方阵

错误原因:在使用向量乘法运算的时候,没有用点乘。

解决办法:在涉及向量乘法的语句中用.*代替*,更多的请参考本帖 5 楼的描述

Explicit integral could not be found.

中文解释:显式解没有找到

出错原因:并非每个函数的积分都有显式解,这是由于原函数没有解析结果而给出的警告解决办法:改用数值积分(quad、quadl等)即可

Index exceeds matrix dimensions.

Attempted to access b(3,2); index out of bounds because size(b)=[2,2].

中文解释:索引超出矩阵的范围

出错原因:在引用矩阵元素的时候,索引值超出矩阵应有的范围

解决办法:检查所定义数组的维数,和引用的范围。

举例:

【错误代码】:

1. b = zeros(2,2);

2. a = b(3,2);

复制代码

【正确代码】:

1.

2. b = zeros(2,2);

3. a = b(1,2);

复制代码

In an assignment A(I) = B, the number of elements in B and I must be the same

中文解释:在赋值语句 A(I) = B 中,B 和 I 的元素个数必须相同

出错原因:I 和 B 的维数、大小不一样。这正如“把 5 个水果放到 6 个篮子”、或者“把6 个水果放到 5 个篮子”,均无法实现

解决办法:自己设置断点调试一下,看看 I 和 B 的维数、大小是否相同,不同的话就要修改成两者一致

举例:

【错误代码】:

1. b = [1,2];

2.s(1) = b;

复制代码

【正确代码】:

1.

2. b = [1,2];

3.for i = 1:2

4. s(i) = b(i);

5.end

复制代码

当然,这样的赋值使用循环是低效的,因此不提倡

To RESHAPE the number of elements must not change

中文解释:矩阵变换时,变换前和变换后的总元素不能改变

出错原因:变换时语句使用不恰当。例如,变换前是 [2,3] 的6个元素的矩阵,变换后可以是[3,2]、[1,6]的6元素矩阵,但不能是[2,4]的8元素矩阵

解决办法:自己设置断点调试一下,看看变换前后的矩阵大小是否相同,不同的话就要修改成两者一致

举例:(出错原因中已提及)

[原创]写给学习 matlab 的新手们

本人接触matlab已经有5年多的时间了,一直想写点东西,但是之前不知道放在哪里才能发挥它的最大作用,直到几天前碰上了这个论坛(有点像诸葛亮遇见姜维,哈哈)。

废话不说,我想借贵论坛宝地,写一些经验给使用matlab的新手们,当然了,老大们也可以看看,不嫌弃我写得粗糙的话还可以指点一下,先谢过了~~~~

首先我想说的是,matlab跟其他语言不一样(我用的比较多的编程语言,除了matlab就应该是c或c++了,VB和Delphi也接触过,我想版面(matlab版)大部分人也差不多),如果你抱着“把其他语言的思想运用在matlab里面”的话,那么我想,即使程序运行不出错,也很难把握matlab的精髓,也就很难发挥matlab的作用了。所以,如果你是希望掌握一门语言、一个工具,使它更有效为你服务的话,那么,希望本文对你有所帮助,请精读;如果你是希望matlab作为VC的附属品,即你不想在matlab上面花太多功夫,只纯粹想用matlab 来完成VC做不了或很难做成的任务的话,那么,本文你也应该至少浏览一下。

浏览

Matlab是一个基于矩阵运算的软件,这恐怕是众所周知的事情了,但是,真正在运用的时候(就是在编程的时候),许多人(特别是初学者)往往没有注意到这个问题,因此,for 循环(包括while循环)满天飞…………..这不仅是暴殄天物(没有发挥matlab所长),还浪费了你宝贵的时间。对此,版友MVH在他的“MATLAB小技巧”一文中也有所涉及,雷同的东西我也就不重复了,matlab的“帮助”里面也有相关的指示。我这里想说的一点是,初学者往往在初始化矩阵的时候注意到这个问题,懂得了使用矩阵而不是循环来赋值,但是,在其他环节上,就很容易疏忽,或者说,仍然没有摆脱C++的思想。举个例子吧,下面的代码是我的一个师弟写的,我想他接触matlab也有2、3年时间了(在此说明一下,接触2、3年并不是表示每天都会跟matlab打交道,我本人也不是,只是在一年某几个时间段里面连续使用),但是仍然会出现类似的问题:

J = 0;

lt = size(imf1,2);

for (i = 1:lt)

if (abs(imf1(i)) > 1)

J = 1;

break

end

end

上面的代码实现了一个目的――检查信号imf1(一个向量)是否存在绝对值大于1的点,这显然是基于C++的思想写出来的。如果在matlab下面,其实用两个语句就足够了(当

然,可以合并为一个):

q = find(imf1>1);

J = ~isempty(q);

这样的修改带来的好处是很可观的。

又如:

for j = 1:num

imf1(start1+j) = 2*li1(j+1) - imf1(start1+j);

end

这是一个对称翻折的问题,它完全可以用以下这个语句简洁表示:

imf1(start1+1:start1+num) = 2*li1(2:num+1) - imf1(start1+1:start1+num);

因此,如果是新手,可以先用循环(基于C++的思想)来编写代码,然后看看能否用matlab 的语言(基于矩阵的思想)来改进。当然,这样做的前提是你对matlab提供的一些函数比较熟悉才行,这些函数在matlab的“帮助”那里搜索“Functions Used in Vectorizing”就可以找到一些,其他的也可以找相关的书籍(没找到?不可能,电子版总可以下载到的)

对提高matlab编程能力的方法,我想主要有以下三个:

1. 查help

如何查?抽丝剥茧法,具体请看此贴2楼:matlab画的三维图的怎么使x轴的label 标注平行于x轴

2. 多上上论坛,搜索帖子、发帖子提问

3. 阅读别人、特别是牛人的程序

当然了,正如所有的程序语言一样,“3分课本7分上机”,一定要动手才行,不能光看。多想、多思考、多尝试,才是正路。

以下技巧就是平日动手编程、阅读别人的帖子后整理出来的(不断添加中):

1. matlab的运算是基于矩阵的,但是也提供了对应元素的运算,即在运算符前面

加上“点”。例如:

>> a = [1,2;3,4]

a =

1 2

3 4

>> b = [-1,-2;-3,0]

b =

-1 -2

-3 0

>> a * b

ans =

-7 -2

-15 -6

>> a .* b

ans =

-1 -4

-9 0

也就是说,没有加“点”的运算是对整个矩阵而言的,称为矩阵运算(整体运算),而加了“点”的运算是对每个元素而言的,称为点运算(局部运算)。另外,一般情况下,matlab作点运算(理解为左右两个对象(矩阵)的对应元素参与该运算)时,两个矩阵的维数和长度都要求是同大小的,且此时要在运算法前面添加“点”,但是在某些情况下该“点”可以省略,例如一个标量a和一个向量b(或者矩阵)相加、相减、相乘、b/a时都可以不需要加点,表示b中每个元素都和a进行运算(即点运算的效果)

? 2.强烈建议大家在命名自己的函数名(更加准确应该说m文件名)时,在名称前面加上 my 等个人专用标识,即假如你要把你的函数命名为conv,则最好写成 myConv,否则容易与matlab自带的函数(m文件)名字重复而导致“Attempt to execute SCRIPT conv as a function”的错误!当你碰到这个错误时,可以在命令窗口中输入 which conv all 来看看到底有否重复命名了该函数,有的话,建议把自己命名的文件改名,保留 matlab 自带的文件。此外,命名文件名时,必须符合标识符的规范,即不能以数字开头等等,否则会出现莫名其妙的错误!

? 3.在条件判断中,y==0, a-b==0这类语句应该尽量避免使用,除非你可以保证y、a、b在整个计算过程中是整数,否则两个浮点数相减、或者一个浮点数不可能完全等于0。因此,对浮点数进行条件判断时,最好采用 abs(a-b) <= 1e-005 这种方式来进行等值比较

? 4.循环变量递减时必须显式给出步长,即 i = 5:-1:-5 (假设步长为-1),如果递增时且步长为1,则可以省略,简写作 i = -5:5

? 5.在引号环境下的语句中,如果需要使用单引号,则要写成两个单引号的形式,不能用一个双引号代替!例

如: ...'callback','[imp,Fs,bits]=wavread(''temp.wav'');' 文件名

temp.wav 外面的是两个单引号

? 6. 如果你编写的函数带有输入参数(例如 x ),则跟其他语言一样,这只是形式参数,所以不能通过直接运行该函数(或者m文件)来测试,这样会出现 ??? Input argument "x" is undefined. 的错误。一定要从其他地方(如命令窗口或者其他函数对其调用)来传递真实值,此时 x 才是实际参数。如果你有C语言的编程经验,命令窗口就相当于main函数;如果没有,以下是举例:

myPlus.m:

此外,和每一种编程语言一样,所有定义的变量都有一定的作用域。虽然matlab宣称变量不需要定义即可以直接使用,但是,事实上任何编程语言的变量都需要先定义才能使用,所以matlab也不例外(看来真的是“matlab宣称变量不需要定义”惹的祸),只不过所不同的是并非使用int x 这种方式来定义,而是使用一个简单的赋值语句包含定义+初始化。因此,如果直接使用未定义的变量(最常用的是在“=”右边首次出现),则会出现“Undefined function or variable”的错误!例如:

则运行时matlab会报错:Undefined function or variable t!此时当实际参数传递给输入变量 x 后, x、z 就被定义了,但是 t 却没有。

因此,强烈建议在使用变量之前(特别是循环中使用数组),先预分配空间,这样容易减少很多莫名其妙的错误,具体做法参见以下图片:

?7. 如何调试程序:编好程序(先保证代码没有语法错误),设置断点(m文件编辑窗口中菜单 Debug 有 Set/Clear breakpoint),运行程序(菜单 Debug 有 Run 或Save & Run),此时 matlab 会停在断点处,各变量的值可以通过鼠标停留在变量

名上观察到,或者在命令窗口中敲入变量名后得到

?8. 对于matlab自带函数(命令)的问题,请多利用matlab的帮助功能。即在命令窗口中输入: help eval 或者 doc eval。更多的帮助指令请参阅以下链接的帖子:[转帖]MATLAB中的帮助指令

?9. 对于 mat 文件的读取,由于存放的是结构体数组,因此调用 A = load('*.mat') 后,得到的 A 并非原始数据,而是一个结构体,此时需要使用".域名" 才能正确得

到数据,例如:

后得到:

A =

Signal: [85x7794x64 single]

TargetChar: [1x85 char]

Flashing: [85x7794 single]

StimulusCode: [85x7794 single]

StimulusType: [85x7794 single]

则用:

?此外,不建议使用 load *; 这种方式读取 mat 文件(读取 dat 等其他格式的文件也是类似),因为此时读取后的变量名是存储时设定的,假若文件并非您本人存储,则无法获悉这个变量名,通过这种方式是无法在读取时候指定数据存放在哪个变量

中的,这样将会导致下文不知道使用哪个变量名,甚至会导致出错!因此,强烈建

议采用A = load('*.mat'); 方式进行读取,当然了,如果文件是您本人存储的,则用前面的方式比较简便,这另当别论。下面以 dat 文件作为例子说明:

clear all

>> a = magic(4); b = ones(2, 4) * -5.7; c = [8 6 4 2];

>> save -ascii 1_data.dat

>> load 1_data.dat

因为这种方式的读取是把数据默认存放在以“不含后缀的文件名”命名的变量中

(这里为 1_data),但是由于 1_data 不是合法的标识符,因此 matlab 自动改成X1_data(不同版本的matlab可能不同),即读取出来的数据事实上是存放在 X1_data 变量中。如果使用 m 文件方式编程(即 load 1_data.dat 后有分号),则这个变

量名根本不会显示出来,也就是说,对它的改名你是毫不知情的,这时候下文继续

使用 1_data 的话,就会产生错误。

?10. matlab 对中文的文件路径(不光是文件名)不太支持,特别是 6.5 版本。

?11. 函数不能在命令窗口中定义,只能在 m 文件中定义。否则出现: ??? Error: Function definitions are not permitted at the prompt or in scripts. 的错

误!

最后,整理一下常用的快捷键(用【】表示)或命令:

1. 在命令窗口(Command Window)中:

1) 【上、下键】――切换到之前、之后的命令,可以重复按多次来达到你想要的命令

2) clc――清除命令窗口显示的语句,此命令并不清空当前工作区的变量,仅仅是把屏幕上显示出来的语句清除掉

3) clear――这个才是清空当前工作区的变量命令,常用语句clear all来完成

4) 【Tab】键――(转自版友心灯)在matlab@https://www.360docs.net/doc/9d4896922.html,看到的:在command窗口,输入

一个命令的前几个字符,然后按tab键,会弹出前面含这几个字符的所有命令,找到你要的命令,回车,就可以自动完成。目前讨论结果是:matlab6.5版本中,如果候选命令超过100个,则不显示。而在matlab7以后版本中,则没有这个限制,均可正常提示

5) 【Ctrl+C】(或【Ctrl+Break】)――(转自版友yangjin_ren)在matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入“Ctrl+C”可以将运行的程序停下来,而不需要将整个Matlab程序关掉。不过进行此操作的前提是能够激活切换到命令窗口才行,呵呵。

2. 在编辑器(Editor)中:

1) 【Tab】(或【Ctrl+]】)――增加缩进(对多行有效)

2) 【Ctrl+[】--减少缩进(对多行有效)

3) 【Ctrl+I】--自动缩进(即自动排版,对多行有效)

4) 【Ctrl+R】――注释(对多行有效)

5) 【Ctrl+T】――去掉注释(对多行有效)

6) 【Ctrl+B】――括号配对检查(对版本6.5有效,但版本7.0以上无效,matlab把这项功能自动集成到编辑器里面了,即在m文件编辑窗口中会自动进行括号配对检查,并在窗口右侧有红橙绿三灯提示,具体请参考以下帖子:https://www.360docs.net/doc/9d4896922.html,/forum/thread-746722-1-4.html)

7) 【F12】――设置或取消断点

8) 【F5】――运行程序

其余的例如在Debug状态下的快捷键就不多说了,自己看菜单Debug吧

累了,有时间再写吧。希望大家多交流~~~~~~

Coming: (以下东西都是一年前做的了,不知道能否记起,呵呵)——已经全部完成

1) 关于神经网络的――调用matlab的nntool命令后的使用问题(我做的时候没有看过其他书籍或资料,是自己闭门造车的结果,如果写之前发现其他书籍有相关介绍的话就不写了)2) 关于外部接口的――matlab与C++Builder的接口,想详细介绍如何利用matcom 4.5在C++Builder中调用matlab的代码以及matcom的一些技巧。由于我不是搞项目开发的(搞科研、搞课题的),所以对VC不熟悉,大学的时候学过一点,不过我想对于搞科研来说C ++Builder就足够了,免去很多麻烦,Builder在界面设计和数据库连接上面(我只接触过这两方面)还是做得不错的。同样,如果发现其他书籍上有类似的东西就不写了

3) GUI方面也写写吧,只是一点点心得或者体会,呵呵,这个相对简单些,篇幅相对要少些。

matlab常见的错误提示及其解决方法

matlab常见的错误提示及其解决方法 (2011-07-23 09:08:09) 分类:matlab学习 标签: matlab 常见错误 原因 解决方法 it 今天在百度知道上收到求助,说想知道matlab常见错误。个人虽然也学了点matlab皮毛,并且碰过不少问题,但从没有认真总结过常见的错误。于是上网搜索一番,整理出常见的错误,当前以整理出的内容如下,不足之处待以后补充,也期待看到此篇博文的朋友帮忙指出不足。 1.Undefined function or variable "U" 中文解释:函数或变量 U 没有定义 出错原因:函数或变量 U 没有定义 解决办法:仔细检查错误所指向的位置,寻找没有定义的函数或者变量,加以定义。 2.Unexpected MATLAB expression. 中文解释:不规范的matlab表达式 出错原因:少了运算符号,或者括号等情况 解决办法:仔细检查错误所指向的位置,检查是否少了乘号,或者逗号、分号、括号等。 3.Subscript indices must either be real positive integers or logicals

中文解释:下标索引必须是正整数类型或者逻辑类型 出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出 现了负数。注:matlab 的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。 解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。 4.Matrix dimensions must agree 中文解释:矩阵的维数必须一致 出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运 算符。matlab 通过“.”来区分矩阵运算和元素运算。 解决办法:自己调试一下程序,保证运算符两边的运算对象维数一致。 5.Function definitions are not permitted at the prompt or in scripts 中文解释:不能在命令窗口或者脚本文件中定义函数 出错原因:一旦在命令窗口写 function c = myPlus(a,b),此错误就会出现,因为函数只能定义在 m 文件中。 关于脚本文件和 m 文件的区别可查阅 matlab 基础书。 简言之: 1) 如果你写成 function 的形式,那么必须写在 m 文件中,且以function 开头(即 function 语句前不能包含其他语句,所有语句必须放在function 中,当然,function 的定义可以有多个,各 function 之间是并列关系,不能嵌套); 2) 如果你写成脚本的形式,则既可以写在命令窗口中,也可以写在 m 文件中,但两者均不能包含 function 语句(即不能进行函数的定义) 解决办法:新建一个 m 文件,然后再进行函数的定义

MATLAB实验题答案

1、求以下变量的值,并在MATLAB中验证。( 1 ) a = 1 : 2 : 5 a = 1 3 5 ( 2 ) b = [ a' , a' , a' ;a ] b = 1 1 1 3 3 3 5 5 5 1 3 5 ( 3 ) c = a + b ( 2 , : ) c = 4 6 8 2、下列运算是否合法,为什么?如合法, 结果是多少? >> result2=a*b Error using * Inner matrix dimensions must agree. >> result3=a+b result3 = 3 6 2 5 8 11 >> result4=b*d result4 = 31 22 22 40 49 13 >> result5=[b;c']*d result5 = 31 22 22 40 49 13 -5 -8 7 >> result6=a.*b result6 = 2 8 -3 4 1 5 30 >> result7=a./b result7 = 0.5000 0.5000 -3.0000 4.0000 1.6667 1.2000>> result8=a.c Attempt to reference field of non-structure array. >> result9=a.\b result9 = 2.0000 2.0000 -0.3333 0.2500 0.6000 0.8333 >> result10=a.^2 result10 = 1 4 9 16 25 36 >> result11=2.^a result11 = 2 4 8 16 32 64 3、用MATLAB求解下面的的方程组。 (1) ? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - 1 7 4 13 2 3 1 5 11 2 2 2 3 15 9 2 1 2 7 4 3 2 1 x x x x >> A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13] >> B=[4 7 -1 0] >> B=B' >> x=inv(A)*B (2) ? ? ? ? ? ? ? = - + + = - - = - + + = + + 5 6 5 3 3 3 3 2 8 2 1 w z y x w y x w z y x z y x >> A1=[1 1 1 0;1 2 1 -1;2 -1 0 -3;3 3 5 -6] >> B2=[1;8;3;5] >> x2=inv(A1)*B2 4、已知 ? ? ? ? ? ? ? ? ? ? ? ? - - - - = 13 2 3 1 5 11 2 2 2 3 15 9 2 1 2 7 A

Matlab基本语法.word

实验序号 1 Matlab基本语法 一、实验目的 通过本实验,使学生初步了解Matlab的基本语法规则,学习并进一步掌握Matlab矩阵运算和数组运算的基本规则,以及基本绘图方法。 二、实验器材 PC电脑一台 MATLAB软件 三、实验内容与基本要求 a) 通过MATLAB语言,给矩阵赋值:显示一行数组,显示一列数组。 b) 基本基本矩阵的显示方式:ones,zeros,eye。 c) 在同一张图上绘出:y=3sin(x+pi/3),y=cos(3x+pi/6),并用不同的线型和点型区分。 d) 基本二维与三维绘图命令的训练。 四、实验报告要求 要求给出编程思路及程序清单,并呈现出最终结果 1)显示一行: a=[1 2 3 3 4 5 6] 回车结果: a = 1 2 3 3 4 5 6 显示一列; a=[1 ,2 ,3 ,4 ,5] 回车显示: a= 1 2 3 4 5

2)输入ones(2,5): 输出结果: ans= 1 1 1 1 1 1 1 1 1 1 输入zeros(2,3): 输出结果: ans= 00 0 00 0 输入eye(4,4): 输出结果: ans= 10 0 0 0 1 0 0 00 1 0 00 0 1 3)在matlab中输入: x=0:0.01:10; y=3*sin(x+pi/3); plot(x,y,’:r’) hold on y=cos(3*x+pi/6) plot(x,y,’b’) 得到图形:

4) 输入程序: y=5*(rand(1,10)-.5); plot(y) title('my first plot') xlabel('x'); ylabel('y'); grid on 得到二维图形: 012345678910 -3-2 -1 1 2 3

matlab常用操作命令

matlab常用操作备忘(1)2007-11-30 22:01:06 分类: 北京理工大学 20981 陈罡 帮助朋友做几个数据的卷积的仿真,一用才知道,呵呵,发现对不住偶的导师了。。。好多matlab的关键字和指令都忘记了。特意收集回顾一下: (1)管理命令和函数 addpath :添加目录到MATLAB搜索路径 doc :在Web浏览器上现实HTML文档 help :显示Matlab命令和M文件的在线帮助 helpwin helpdesk :help 兄弟几个 lookfor :在基于Matlab搜索路径的所有M文件中搜索关键字 partialpath:部分路径名 8*) path :所有关于路径名的处理 pathtool :一个不错的窗口路径处理界面 rmpath :删除搜索路径中指定目录 type :显示指定文件的内容 ver :版本信息 version :版本号 web :打开web页 what :列出当前目录吓所有的M文件 Mat文件和 Mex文件 whatsnew :显示readme文件 which :显示文件位置 (2)管理变量和工作区 clear :从内存中删除所有变量,clear x y z是删除某个变量 disp :显示文本或数组内容 length :数组长度(最长维数) load :重新载入变量(从磁盘上) mlock :锁定文件,防止文件被错误删除 munlock :解锁文件 openvar :在数组编辑器中打开变量 pack :整理内存空间 save :保存变量到文件 8*) size :数组维数

who whos :列出内存变量 workspace :显示工作空间窗口 (3)管理命令控制窗口(command窗口) clc :清空命令窗口 echo :禁止或允许显示执行过程 format :设置输出显示格式 home :光标移动到命令窗口左上角 more :设置命令窗口页输出格式 (4)文件和工作环境 cd :改变工作目录 copyfile :复制文件 delete :删除文件和图形对象 diary :把命令窗口的人机交互保存到文件 dir :显示目录 edit :编辑文本文件 fileparts :返回文件的各个部分 fullfile :使用指定部分建立文件全名 inmem :返回内存(伪代码区)的matlab函数名 ls :在unix系统中列出目录(win中亦可) matlabroot :根目录 mkdir :新建目录 open :打开文件 pwd :显示当前目录 tempdir :返回系统临时目录的名字 tempname :随机给出一个临时字符串(可用作文件名) ! :直接调用操作系统command命令 (5)启动和推出matlab matlabrc :Matlab的启动M文件 exit quit :退出Matlab startup :运行matlab启动文件 (6)程序设计 builtin :从可重载方法中调用内置函数 eval :执行包含可执行表达式的字符串

MATLAB实验题答案

result5 = ( 1 ) a = 1 : 2 : 5 a = 1 3 5 ( 2 ) b = [ a' , a' , a' ;a ] b = 1 1 1 3 3 3 5 5 5 1 3 5 ( 3 ) c = a + b ( 2 , : ) c = 4 6 8 2、下列运算是否合法,为什么如合法, 结果是多少 >> result2=a*b Error using * Inner matrix dimensions must agree. >> result3=a+b result3 = 3 6 2 58 11 >> result4=b*d result4 = 31 22 22 40 49 13 31 22 22 40 49 13 -5 -8 7 >> result6=a.*b result6 = 2 8 -3 415 30 >> result7=a./b result7 = >> result8= Attempt to reference field of non-structure array. >> result9=a.\b result9 = >> result10=a92 result10 = 1 4 9 16 25 36 >> resultl 1=29a result11 = 2 4 8 16 32 64 >> result5=[b;c']*d 3、用MATLAB求解下面的的方程组。 1、求以下变量的值,并在MATLAB^验证。

1 2 x1 3 2 x2 11 5 x3 2 1 3 x4 >> A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13] >> B=[4 7 -1 0] >> B=B' >> x=inv(A)*B >> A1=[1 1 1 0;1 2 1 -1;2 -1 0 -3;3 3 5 -6] >> B2=[1;8;3;5] >> x2=inv(A1)*B2 7 2 1 2 9 15 3 2 2 2 11 5 1 3 2 13 (1)求矩阵A的秩(rank) (2)求矩阵 A 的行列式(determinant) (3)求矩阵 A 的逆(inverse) (4)求矩阵 A 的特征值及特征向量 (eigenvalue and eigenvector) >> A3=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13] >> r=rank(A3) >> b=inv(A3) >> a=det(A3) >> [V,D]=eig(A3) 10 n 10 查看y 的值) m1=0; for m=-10:10 m仁m1+2^m; end m1 m1 = 6、求分段函数的值。 用if 语句实现,算出下列表中x 对应的y 值。 x=input('enter x='); if x<0 y=x A2+x-6; elseif x>=0&&x<5 y=xA2-5*x+6; else y=xA2-x-1; end y 7、分别用if 和switch 语句实现,将百分 制成绩转换为成绩等级A、B、C、D、E。 其中90~1 00分为A,80~89 分为B,70~79 分为C,60~69 分为D,60 分以下为E。 对超出百分制范围的成绩,给出错误提示 信息。 if 结构程序: x=input('please enter score='); if x>=90&&x<=100 9 2 10 disp('A') 7 2 9 15 (1) 2 2 1 3 4 7 1 0 A 4、已知 2n 2 10 29

matlab安装常见问题解决方案

1、安装MATLAB7时弹出以下警告对话框,显示 " The installer cannot read the mwinstall.dll file, This is probably due to a CD reader which can only read files with an eight.three naming convention. Please see the technical support page at " 解决的办法是在【我的电脑】-右键-【属性】然后选择【高级】-【环境变量】,将环境变量中位于上部的用户变量中的TEMP和TMP修改为C:/temp即可,并备份好原来的路径。安装文件一定要放在英文目录下,如:E:\software\matlab 7.0就可以,而E:\软件\matlab 7.0就不行。 2、我的matlab7.0也出现这种毛病,打开就自动关闭,请问怎么解决? 完成后你会发现打开后一会就自动关闭,不要惊慌,你的机器cpu一定是amd的,在你的安装文件夹下找到atlas_Athlon.dll文件,是用来让amd芯片进行正常工作的。因为当初mathwork公司是以intel芯片为目标的。找到这个文件比如路径是D:MA TLAB7 \bin\win32\atlas_Athlon.dll,再次右键单击我的电脑属性,高级,环境变量,系统变量新建变量名:BLAS_VERSION,值为D:MATLAB7 \bin\win32\atlas_Athlon.dll 3、问题: 启动Matlab以后显示: The element type "name" must be terminated by the matching end-tag "". Could not parse the file: d:\matlab7\toolbox\ccslink\ccslink\info.xml 解决: 打开matlab7.0就出现如下的提示 The element type "name" must be terminated by the matching end-tag "". Could not parse the file: d:\matlab7\toolbox\ccslink\ccslink\info.xml. 解决方法是: 找到d:\matlab7\toolbox\ccslink\ccslink\info.xml 这个文件(如果是装在C盘则在C盘目录下),一定要用写字板打开这个文件,找到有一行这样的Link for Code Composer Studio?/name>,大概是在第七行吧,把这句的/name>改成,再保存一下这文件。

matlab常见错误命令

matlab常见错误命令 >> a=【0 1 2 3 4 5 6 7 8 9】 ??? a=【0 1 2 3 4 5 6 7 8 9】 Error: The input character is not valid in MATLAB statements or expressions. error ['er?]n. 错误,过失input ['input]n. 输入character ['k?rikt?]n. 个性,字符,人物valid ['v?lid]a。有确实根据的,有效的,正当的statement ['steitm?nt]n. 声明,陈述expression [iks'pre??n]n. 表达,表示,表现,表情,措辞,词句expressions n.表示式公式>> x=-5:5;y=-5:5;z=x^2+y^2;polt(x,y,z) Error using ==> mpower Matrix must be square. matrix ['meitriks]n. 母体,子宫,细胞,脉石,字母n.矩阵 square [skw??]n. 正方形,街区,平方a. 正方形的,正直的,公正的v. 一致,符合,使...成方形>> x=-5:5;y=-5:5;z=x.^2+y.^2;polt(x,y,z) Undefined function or method 'polt' for input arguments of type 'double'. undefined ['?ndi'faind]未定义的function ['f??k??n]n.功能,函数,重大聚会vi. 运行,起作用method ['meθ?d]n. 方法,办法argument ['ɑ:gjum?nt]n. 辩论,争论,论据,理由

matlab常见错误

1.Subscript indices must either be real positive integers or logicals 中文解释:下标索引必须是正整数类型或者逻辑类型 出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab 的语法规定矩阵的索引从1 开始,这与 C 等编程语言的习惯不一样。 解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。 2.Undefined function or variable "U" 中文解释:函数或变量 U 没有定义 .出错原因及解决办法:可能变量名输入错误,仔细检查 3.Matrix dimensions must agree 中文解释:矩阵的维数必须一致 出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。matlab 通过“.”来区分矩阵运算和元素运算。 解决办法:自己调试一下程序,保证运算符两边的运算对象维数一致。 4.Function definitions are not permitted at the prompt or in scripts 中文解释:不能在命令窗口或者脚本文件中定义函数 出错原因:一旦在命令窗口写 function c = myPlus(a,b),此错误就会出现,因为函数只能定义在 m 文件中。关于脚本文件和 m 文件的区别请查阅 matlab 基础书。简言之: 1) 如果你写成 function 的形式,那么必须写在 m 文件中,且以 function 开头(即 function 语句前不能包含其他语句,所有语句必须放在 function 中,当然,function 的定义可以有多个,各 function 之间是并列关系,不能嵌套); 2) 如果你写成脚本的形式,则既可以写在命令窗口中,也可以写在 m 文件中,但两者均不能包含 function 语句(即不能进行函数的定义) 解决办法:新建一个 m 文件,然后再进行函数的定义 5.One or more output arguments not assigned during call to '...' 中文解释:在调用...函数过程中,一个或多个输出变量没有被赋值 出错原因:函数如果带有输出变量,则每个输出在返回的时候都必须被赋值。容易出现这个错误的两个地方是:在部分条件判断语句(如 if )中没有考虑到输出变量的返回值。 在循环迭代过程中部分变量的维数发生了变化。 解决办法:调试程序,仔细查看函数返回时各输出变量的值。更好的方法是:在条件判断或者执行循环之前对所使用的变量赋初值。 6.??? Index exceeds matrix dimensions.

MATLAB实验题目及答案

实验二一维二维数组的创建和寻访 一、实验目的 1、掌握一维数组、二维数组创建和寻访的几种方法。 2、区别数组运算和矩阵运算的差别。 3、熟悉执行数组运算的常用数组操作函数。 4、掌握数组运算中的关系和逻辑操作及常用的关系、逻辑函数。 5、掌握“非数”、“空”数组在MA TLAB中的应用。 二、实验主要仪器与设备 装配有MA TLAB7.6软件的计算机 三、预习要求 做实验前必须认真复习第三章MATLAB的数值数组及向量化运算功能。 四、实验内容及实验步骤 1、一维数组的创建方法有哪几种?举例说明。 答:一维数组的创建方法有: ①递增/递减型一维数组的创建:冒号生成法:x=a:inc:b 线性(或对数)定点法:x=linspace(a,b,n),x=logspace(a,b,n) ②逐个元素输入法:如x=[0.1,sin(pi/5),-exp(-3),-2*pi] ③运用MA TLAB函数生成法:例ones,rand等。 2、输入以下指令,并写出运行结果。本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作用。 A=zeros(2,6) %创建(2×6)的全零数组 A(:)=1:12 %赋值号左边:单下标寻访(2×6) 数组A的全部12个元素 %赋值号右边:拥有12个元素的一维数组 A(2,4) %双下标:A数组的第2行第4列元素 A(8) %单下标:数组A的第8个元素 A(: , [1,3]) %双下标:显示A的“第1列和第3列上全部行的元素” A([1, 2, 5, 6]') %单下标:把A数组第1,2,5,6个元素排成列向量 A(: , 4:end) %双下标:显示A的“从第4起到最后一列上全部行的元素” %在此end用于“列标识”,它表示“最后一列” A(2,1:2:5)=[-1, -3, -5] %把右边的3个数分别赋向A数组第2行的第1,3,5个元素位置 B=A([1, 2, 2, 2], [1, 3, 5]) %取A数组的1,3,5列的第1行元素作为B的第1行 %取A数组的1,3,5列的第2行分别作为B的第2,3,4行 L=A<3 %产生与A维数相同的“0,1”逻辑数组 A(L)=NaN %把逻辑1标识的位置上的元素赋为“非数” 运行结果: A = 0 0 0 0 0 0 0 0 0 0 0 0

(完整版)Matlab基本语法教案

第二章基本语法 2.1 MATLAB的矩阵、变量与表达式 在MATLAB系统中,只管理着一种对象---矩阵(包括复数矩阵),任何数量在MATLAB 中是作为1x1的矩阵来处理的。 一、矩阵的创建: 1. 在MATLAB中创建矩阵的原则: (1) 矩阵元素必须写在“[]”内; (2) 矩阵的同一行之间用空格或“,”分隔; (3) 矩阵的行与行之间用分号或回车符分隔; (4) 矩阵的尺寸不必预先定义; (5) 矩阵元素可以是数值、变量、表达式或函数。 2. 创建矩阵的四种方法。 (1) 在命令窗口直接输入: 如输入:A=[1,2,3;4,5,6;7,8,9] 则显示:A= 1 2 3 4 5 6 7 8 9 也可用空格代替逗号,用回车代替分号: 如上例:A=[1 2 3 4 5 6 7 8 9] 则显示:A= 1 2 3 4 5 6 7 8 9 (2) 由M文件创建矩阵: 有时编程需要用M文件创建矩阵。或者当矩阵尺寸较大时,可以按矩阵的输入方式编辑一个M 文件(可用循环程序来做),在命令窗口直接执行该文件,即可将矩阵调入工作空间。 (3) 由函数创建矩阵: 对于一些特殊的矩阵,可以利用MATLAB的内部函数或用户自定义函数创建矩阵。 如diag()函数可生成对角阵。ones(m,n) ; zeros(m,n) (4) 通过数据文件创建矩阵: save 文件名(其中,文件名是*.mat文件) load 文件名例:工作目录下有temp.mat文件,可以执行load temp

3. 复数矩阵表示 (1) 复数表示 复数的虚根单位用i,j表示,即:z=3+4i或z=3+4j. 例如输入z=3+4i 输入z=3+4j 得到:得到: z = z = 3.0000 + 4.0000i 3.0000 + 4.0000i (2) 复数矩阵 A=[1 2;3 4]+i*[5 6;7 8] 或者A=[1+5i 2+6i;3+7i 4+8i],都得到: A = 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i 二、MATLAB的变量和表达式 1.变量名命名规则 ?可以是字母、数字或下划线,但第一个字符必须是字母。 ?长度<=31 ?分辨大小写的,M和m是两个变量。 ?无须对变量的类型进行说明,当需要使用一个新变量时,只须直接对其赋值即可。 2.表达式则是由运算符、函数调用、变量名以及特殊字符组成的式子。 3.MATLAB中基本的赋值语句为: (1) 形式一:变量名=表达式 将表达式的结果赋给变量名(表达式的运算结果都是一个矩阵)。 (2) 形式二:表达式 计算表达式的值,将其值赋给MATLAB的永久变量ans。 上面两种形式,当表达式由分号“;”结束时,变量结果不显示。当表达式由逗号“,”或换行号结束,则将结果显示出来。 注: 1)MATLAB中有几个变量不能被clear清除,称永久变量。(其他变量名最好不要与此同)。即ans:当不指明某一语句的计算结果赋给哪个变量时,系统自动将该计算结果赋给ans; eps:计算机能产生的绝对值最小的浮点数;

Matlab实验指导书(含答案)汇总

实验一:Matlab操作环境熟悉 一、实验目的 1.初步了解Matlab操作环境。 2.学习使用图形函数计算器命令funtool及其环境。 二、实验内容 熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算: 1.单函数运算操作。 求下列函数的符号导数 (1) y=sin(x); (2) y=(1+x)^3*(2-x); 求下列函数的符号积分 (1) y=cos(x); (2) y=1/(1+x^2); (3) y=1/sqrt(1-x^2); (4) y=(x-1)/(x+1)/(x+2); 求反函数 (1) y=(x-1)/(2*x+3); (2) y=exp(x); (3) y=log(x+sqrt(1+x^2)); 代数式的化简 (1) (x+1)*(x-1)*(x-2)/(x-3)/(x-4); (2) sin(x)^2+cos(x)^2; (3) x+sin(x)+2*x-3*cos(x)+4*x*sin(x); 2.函数与参数的运算操作。 从y=x^2通过参数的选择去观察下列函数的图形变化 (1) y1=(x+1)^2 (2) y2=(x+2)^2 (3) y3=2*x^2 (4) y4=x^2+2 (5) y5=x^4 (6) y6=x^2/2 3.两个函数之间的操作 求和 (1) sin(x)+cos(x) (2) 1+x+x^2+x^3+x^4+x^5 乘积 (1) exp(-x)*sin(x)

Matlab常见语法错

Matlab常见语法错误 Subscript indices must either be real positive integers or logicals 中文解释:下标索引必须是正整数类型或者逻辑类型 出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从1 开始,这与C 等编程语言的习惯不一样。 解决办法:自己调试一下程序,把下标为0 或者负数的地方修正。关于矩阵的各种访问方式。 举例: 【错误代码】: 1.for s = 0:0.2:2 2. a(s) = 4 * s - 1; 3.end 复制代码 【正确代码】: 1. 2.for s = 1:10 3. a(s) = 4 * s - 1; 4.end 复制代码 当然,这样的赋值使用循环是低效的,因此不提倡

Undefined function or variable "a" 中文解释:函数或变量 a 没有定义 出错原因及解决办法: 1. 如果 a 是变量,则参见[原创]写给学习 matlab 的新手们一贴中技巧 6 后半部分 2. 如果 a 是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m 文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入 pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看) 举例: myPlus.m: 1.function d = myPlus(a,b) 2. d = a + b; 复制代码 【错误调用】: 命令窗口: 1.>> z = myPlus(a,b) 复制代码 【正确调用】: 命令窗口: 1.>> x = 2; 2.>> y = 5; 3.>> z = myPlus(x,y) 复制代码

实验二 MATLAB基本语法(1)

实验二 MATLAB基本语法(1) (变量及其赋值,运算符与数学表达式) 1、实验目的 1)掌握MATLAB的变量及其赋值方法; 2)掌握MATLAB的运算符与数学表达式的基本用法; 2、实验内容 2.1 矩阵及其元素的赋值 2.1.1 变量(即矩阵,下同)的赋值 x1=[1 2 3 4] % 空格作为元素间分隔符 x2=[5,6,7,8] % 逗号作为元素间分隔符 x3=[1,2;3,4;5,6] % 分号作为矩阵行分界符 x4=[2*3,4-5,3^2] % 表达式为矩阵元素赋值 2.1.2 变量名 A=[1,2,3,4,5] a=[1 2 3 4 5] B=a+A % a和A不是同一个变量 2.1.3 元素的标注 w=[1 2 3 4;4 5 6 7;7 8 9 10] w(2,3) % 查看第2行、第3列的结果,注意下标从1开始 2.1.4 矩阵的扩充 w(5,6)=1.2345 % 为原矩阵不存在的元素赋值,矩阵扩充到能容纳该元素

2.1.5 整行(列)赋值 w(4,:)=[1,2,3,4,5,6] % (4,:)表示第4行的所有元素 w(:,6)=[5;6;7;8;9] % (:,6)表示第6列的所有元素 2.1.6 整行清除: w([4,5],:)= [] % 第4,5行变为空矩阵 2.1.7 矩阵的拼接 X1=[1,1,1; 2,2,2];X2=[3,3; 4,4];X3=[5;5];X4=[6,6,6,6; 7,7,7,7] XX=[X1,X2;X3,X4] % 矩阵拼接。注意按行对齐进行拼接 2.1.8 抽取部分 X =[1,2,3,4,5;6,7,8,9,0;3,3,3,3,3;4,4,4,4,4;5,5,5,5,5] Y1=X([1,2,5],[2,4]) Y2=X([2,4],[1,2,3]) 2.1.9 等间隔赋值 ii=0:1:10 % 格式为初值:步长:终值 2.1.10 特殊矩阵和数组 a=eye(3,4) % 单位矩阵 b=eye(size(a)) % 单位矩阵 c=size(a) % 测矩阵的大小 d=zeros(3) % 零矩阵 e=zeros(2,4) % 零矩阵 f=ones(4) % 全1矩阵 h=ones(3,4) % 全1矩阵 C=rand(3) % 均匀分布随机矩阵 C=rand(3,5) % 均匀分布随机矩阵 D=randn(3) % 正态分布随机矩阵(均值=0,方差=1) D=randn(3,6) % 正态分布随机矩阵(均值=0,方差=1)

MATLAB常用指令

MATLAB常用指令 1.常用命令-->管理命令和函数 addpath 添加目录到MATLAB搜索路径 doc 在Web浏览器上现实HTML文档 help 显示Matlab命令和M文件的在线帮助 helpwin helpdesk help lookfor 在基于Matlab搜索路径的所有M文件中搜索关键字partialpath 部分路径名 path 所有关于路径名的处理 pathtool 一个不错的窗口路径处理界面 rmpath 删除搜索路径中指定目录 type 显示指定文件的内容 ver 版本信息 version 版本号 web 打开web页 what 列出当前目录吓所有的M文件Mat文件和Mex文件whatsnew 显示readme文件 which 显示文件位置 (返回) 2.常用命令-->管理变量和工作区(输入输出、内存管理等) clear 从内存中删除 disp 显示文本或数组内容 length 数组长度(最长维数) load 重新载入变量(从磁盘上) mlock 锁定文件,防止文件被错误删除 munlock 解锁文件 openvar 在数组编辑器中打开变量 pack 整理内存空间 save 保存变量到文件8*) size 数组维数 who 列出内存变量 whos 列出内存变量,同时显示变量维数 workspace 显示工作空间窗口 (返回) 3.常用命令-->管理命令控制窗口(command窗口) clc 清空命令窗口 echo 禁止或允许显示执行过程 format 设置输出显示格式 home 光标移动到命令窗口左上角 more 设置命令窗口页输出格式 (返回)

MATLAB实验上机易错题汇总

1、完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。(2) 建立一个字符串向 量,删除其中的大写字母。 (1) m=100:999; n=find(mod(m,21)==0); length(n) ans = 43 (2)>> ch='Maybe One Day' p=find(ch>='A'&ch<='Z') ch(p)=[] ch = Maybe One Day 2、自行产生一个5行5列的数组,分别得到最中间的三行三列矩阵、右下角2行2列矩阵, 奇数行矩阵、奇数列矩阵、奇数行奇数列矩阵。 >> t=rand(5)%生成矩阵 A=t(2:4,2:4)%中间三行散列矩阵 B=t(4:5,4:5)%右下角两行两列矩阵 C=t(1:2:end,:)%奇数行矩阵 D=t(:,1:2:end)%奇数列矩阵 E=t(1:2:end,1:2:end)%奇数行列矩阵 3、求方程组的根 syms x y z [X Y Z]=solve('x+4*y-3*z=2','2*x+5*y-z=11','x+6*y+z=12',x,y,z) 4、已知矩阵A=[1 2;3 4],运行指令B1=A.^(0.5), B2=A^(0.5), 可以观察到不同运算方法所得结果不同。(1)请分别写出根据B1, B2恢复原矩阵A的程序。(2)用指令检验所得的两个恢复矩阵是否相等(利用norm(…,’fro’)指令,误差矩阵F-范数,接近eps量级,认为实际相等)。 5、先运行clear,format long,rng('default'),A=rand(3,3),然后根据A写出两个矩阵:一个对角 阵B,其相应元素由A的对角元素构成;另一个矩阵C,其对角元素全为0,而其余元素与对应的A阵元素相同(diag指令的使用)。 >> format long >> rand('twister',1) >> A=rand(3,3) A = 0.417022004702574 0.302332572631840 0.186260211377671

MATLAB实验题答案

1、求以下变量的值,并在MATLAB 中验证。 ( 1 ) a = 1 : 2 : 5 a = 1 3 5 ( 2 ) b = [ a' , a' , a' ;a ] b = 1 1 1 3 3 3 5 5 5 1 3 5 ( 3 ) c = a + b ( 2 , : ) c = 4 6 8 2、下列运算是否合法,为什么?如合法,结果是多少? >> result2=a*b Error using * Inner matrix dimensions must agree. >> result3=a+b result3 = 3 6 2 5 8 11 >> result4=b*d result4 = 31 22 22 40 49 13 >> result5=[b;c']*d result5 = 31 22 22 40 49 13 -5 -8 7 >> result6=a.*b result6 = 2 8 - 3 4 1 5 30 >> result7=a./b result7 = 0.5000 0.5000 -3.0000 4.0000 1.6667 1.2000 >> result8=a.c Attempt to reference field of non-structure array. >> result9=a.\b result9 = 2.0000 2.0000 -0.3333 0.2500 0.6000 0.8333 >> result10=a.^2 result10 = 1 4 9 16 25 36 >> result11=2.^a result11 = 2 4 8 16 32 64 3、用MATLAB 求解下面的的方程组。 (1)? ? ??????????-=?????????????????????? ???----01741323151122231592127 4321x x x x >> A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13] >> B=[4 7 -1 0] >> B=B' >> x=inv(A)*B (2)???????=-++=--=-++=++5 65333328 21w z y x w y x w z y x z y x >> A1=[1 1 1 0;1 2 1 -1;2 -1 0 -3;3 3 5 -6] >> B2=[1;8;3;5] >> x2=inv(A1)*B2

2第二章 Matlab基本语法

第二章 Matlab 基本语法(一般性操作) §1矩阵和数组的操作Ⅰ——创建 保存 调用 概述:矩阵是线性代数的基本运算单元,通常矩阵是含有M 行和N 列数值的矩形结构。其元素可以是实数或复数,因而可将矩阵分为实数矩阵和复数矩阵。 MATLAB 支持线性代数所定义的全部矩阵运算。软件的优势在于快捷和轻松的处理整个矩阵。通过一定的转化方法,可以将一般的数学运算转化成相应矩阵运算来处理。 在MATLAB 中把数据分为标量、矢量、矩阵和列阵。列阵指多维数组,是一大概念,在列阵中,一维数组是矢量,二维数组即为矩阵。当然,我们也可杷标量看作仅有一行一列的矩阵,把矢量看作仅有一列或一行的矩阵。 一、知识背景 1. n m ? 阶矩阵,记作n m A ?或n m ij a ?)( 如:??? ?????????mn m m n n a a a a a a a a a 212222111211 ,为m 行n 列矩阵 2. 数组:可看成是单行或单列矩阵。 3. 同型矩阵:二矩阵行数和列数相同,如n m n m B A ??,。 4. 特殊矩阵:见矩阵创建3。 二、矩阵的创建 1. 直接输入法:用指令产生数值矩阵 矩阵首尾以 [ ] 括起; 同一行中元素用逗号“,”或空格隔开; 行与行之间必须用分号“;”或按Enter 键分隔。 矩阵元素可以是数字也可以是表达式,表达式中变量必须定义。 例1:创建矩阵:? ? ? ???=6 5 43 2 1a

>> a=[1,2,3;4,5,6] a = 1 2 3 4 5 6 例2:>> x=9,y=pi/6; % 定义x ,y 变量 >> A=[3,5,sin(y);cos(y),x^2,7;x/2,5,1] % 产生矩阵A A = 3.0000 5.0000 0.5000 0.8660 81.0000 7.0000 4.5000 5.0000 1.0000 说明:%作为注释的开始标志,以后的文字不影响计算过程。 练习一: 1-1 创建矩阵:? ? ? ???=6 4 25 3 1A 1-2 创建矩阵:?? ????=sin(y) )cos(os(y) sin(x) x c B ,其中x=π/4,y=π/3。 >> x=pi/4,y=pi/3; x = 0.7854 >> B=[sin(x),cos(y);cos(x),sin(y)] B = 0.7071 0.5000 0.7071 0.8660 2. 矩阵编辑器(Matrix Editor ): (1)首先在工作区定义一个变量,可以是一简单矩阵或数字。 (2)单击工具栏的工作区浏览器(work spase browser )。弹出变量浏览器,显示各变量信息。 或单击View/ work space 弹出变量浏览器,显示各变量信息。 (3)选中所定义变量,左键双击,或单击右键,在点击“open ”,打开矩阵编辑器。也可左键单击工具按钮 ,打开矩阵编辑器。

相关文档
最新文档