matlab学习笔记
- 格式:doc
- 大小:182.50 KB
- 文档页数:17
MATLAB7.0基础教程清华大学笔记第一章MATLAB 7.0简介第二章MATLAB 7.0的安装和用户界面1.3.4.命令窗口查询函数查找具体的函数帮助help查找含有该字段的函数帮助lookfor第三章基本使用方法1.续行符…2.常用的操作命令Cd , clc , clear , clf , diary , dir , disp , echo , hold , load , pack , path , quit , save , type3.MATLAB 7.0 的常用常量Ans , beep , pi , eps , inf , nan , nargin , nargout , varagin , varagout , realmin , realmax , bitmax4.常用的函数Exp , log , log10 , fix , floor , ceil , round , rem , mod , sign , pow2 , sqrt , abs5.rem/mod(X,Y)当X,Y符号相同的时候,这两者一样,当符号不相同的时候才有差别,具体表现在rem结果的符号与被除数相同;mod结果的符号与除数相同6.表达式不能与复数I , j直接相连,只有数字能与复数I , j直接相连第四章数值计算功能1.等差向量的生成:(1)冒泡生成法,如:ans=[m:x:n] x代表步长(2) linspace 函数,如:ans=linspace(m,n,y), y代表向量个数,默认为100 2.向量与数的四则运算加法A+b 减法A-b3. 向量求点积:dot (向量维数要一致)向量求叉积:cross (向量维数要为3)向量求混合积:ans=dot(x1,cross(x2,x3)) (dot和cross的顺序不要搞错了)4. 矩阵的除法x=B\A 就是A*x=B的解,但是要求B与A行数一致x=B/A 就是x*A=B的解,但是要求B与A列数一致。
一、MATLAB 工作窗中的部分通用指令quit 关闭和退出MATLABclc 擦除MATLAB 工作窗中的所有显示内容clf 擦除MA TLAB 的当前图形窗中的图形clear 清除内存中的变量和函数pack 收集内存碎片以扩大内存空间dir 列出指定目录下的文件和子目录清单cd 改变当前工作子目录disp 在运行中显示变量和文字内容type 显示所有指定文件的全部内容echo 控制运行文件指令是否显示的开关hold 控制当前图形窗对象是否被刷新二、语句与变量2.1 Predefined variables系统预定义的变量eps 计算机的最小正数在pc 机上它等于2−52pi 圆周率π的近似值3.14159265358979inf 或Inf 无穷大NaN 不定量i,j 虚数单位定义i = j = −1flops 浮点运算次数用于统计计算量说明1 它们是在MA TLAB 启动时自定义的2.2表达式由下列算符构成并按习惯的优先次序进行运算+ 加法减法* 乘法/ 右除\ 左除^ 乘方设置两种除法是为了方便矩阵的运算对标量而言两者作用相同2.3函数:MA TLAB 的强大功能可函数中略见一斑本质上讲分为三类[1] 内部函数[2] 系统附带各种工具包中的M 文件所提供的大量函数[3] 用户自己增加的函数这一特点是其他许多软件平台无法比拟的2.4显示格式在缺省的状态下MA TLAB 以短格式short 格式显示计算结果可以用MATLAB 命令窗口中format 指令来改变数字的显示格式由于MA TLAB 以双精度执行所有运算显示格式的设置仅影响矩阵的显示不影响矩阵的计算与存储如果矩阵的所有元素都是整数则矩阵以不带小数点的格式显示如果有一个元素不是整数则有几种输出格式默认格式为short 格式只显示5 位有效数字其他的显示格式可显示更多的有效数字还可用科学表示法[例]x=[4/3 1.2345e-6]默认short 格式format short e 短格式科学表示xformat long 长格式xformat long e 长格式科学表示xformat bank 银行格式xformat hex 十六进制格式xformat + +格式用于显示大矩阵的紧凑格式+ 空格分别表示正数负数和零另外还有一种命令为format compact(紧凑格式) 它消去了矩阵之间的间隔行这样可在一屏中显示更多的信息。
Matlab教程命令+指定参数表3-13.3 数据交换系统MATLAB提供了多种方法将数据从磁盘或剪贴板中读入MATLAB工作空间。
具体的读写方法可依据用户的喜好以及数据的类型来选择。
这里主要介绍文本数据的读入。
对于文本数据(ASCII)而言,最简单的读入方法就是通过MATLAB的数据输入向导(Import Wizard),也可以通过MATLAB函数实现数据读入。
例如,对于文本文件test.txt:students’ scoresEnglish Chinese MathmaticsWang 99 98 100Li 98 89 70Zhang 80 90 97Zhao 77 65 87下面通过上述两种方法将该文件数据读入MATLAB工作空间,先介绍MATLAB数据交换系统对文本数据的识别。
此时文件的前几行(此处为“students’ scores”)将被识别为文件头,文件头可以为一行或几行,也可以识别出数据的列头(此处为:“English”、“Chinese”、和“Mathmatics”)和行头(此处为“wang”、“li”、“zhang”和“zhao”),其余的为可分断数据(此处为“99”、“98”、和“100”等)。
首先是通过数据输入向导编辑器读入数据,通过桌面平台上的【File】菜单中的【Import Data】选项打开输入向导编辑器,按向导提示进行操作完成整个文本数据的输入,则用户可以在MATLAB开发环境中使用该文本数据。
例如:>>whosName Size Bytes ClassData 4 3 96 double arrayGrand total is 12 elements using 96 bytes>>DataData =9998 1009889 7080 90 9777 65 87“whos”用于显示当前MATLAB工作空间的变量,而在命令窗口中输入data 后,将显示该数据。
第一讲 MATLAB基本知识【↑】可用于调出前一个命令行,【↓】可调出后一个命令行,这样避免了重新输入的麻烦。
当然历史窗口也具有此功能。
MATLAB文件格式有M、Mat、Mex等。
扩展名为“.m”的文件称为M文件(程序文件)。
顾名思义,该文件是解决问题的程序命令集合,工具箱中的函数大部分是M文件。
扩展名为“.mat”的文件称为MAT文件(数据文件),用来保存工作空间的数据变量。
扩展名为“.mex”的文件称为MEX文件(可执行文件),由MATLAB的编译器对M文件进行编译后产生。
表1-2 常见的文件管理命令命令说明what 显示当前目录中的MATLAB文件which文件主名显示指定的M文件的路径type文件主名显示指定的M文件内容save文件名存储定义的变量或演算结果到指定的文件名diary文件名以ASCII码形式记录所有的输入和屏幕上输出的内容cd.. 显示当前工作目录cd 子目录名进入子目录dir 显示当前目录中所有文件mkdir 建子目录Load filename 寻找名称为filename.mat的档案,并以二进制格式载入当用户在MATLAB命令窗口输入一条命令后,MATLAB按照一定次序寻找相关的文件。
基本的搜索过程是:①检查该命令是不是一个变量;②检查该命令是不是一个内部函数;③检查该命令是否当前目录下的M文件;④检查该命令是否是MATLAB搜索路径中其他目录下的M文件。
(意即可直接调用M文件) 变量的命名的规则是:①变量名区分大小写;②变量名以字母开头,可以由字母、数字、下画线组成,但不能使用标点;③变量名长度不超过63位,最多只能含有63个字符,后面的字符无效。
“%”是注释符,“%”后面的内容为注释,对MATLAB的计算不产生任何影响。
MATLAB是基于矩阵运算的,单一的数也是1×1的矩阵。
MATLAB将所有变量均保存为double的形式,在“Command Window”的状态下,所有的变量均存在于工作空间中。
1. 有矩阵A 、矩阵B 和矩阵X 其关系为A*X=B,来求X ,在MA TLAB 中的语句为X=A\B2. 矩阵A 的分析求行列式 det(A) 求行列式的秩 rank(A) 求逆矩阵 inv(A) 求矩阵的转置A ’ 矩阵A 的特征向量和特征值[C,D]=eig(A) C 为特征向量 D 为特征值 3. 矩阵的数组运算元素之间的运算都叫阵列运算1》乘法(1) 矩阵运算A*B 矩阵的数组运算A.*B(元素与元素相乘)例如求y=sin(x^2) x=0:0.5:10,意思是要把x 每个元素平方后在求y 。
如果在MA TLAB 中运行的话会提示出错,因为x 是一个数组,而对数组每个元素进行运算的话要用数字运算,意思是要在想对应的运算符前加一点,写成y=sin(x.^2).4.函数cat 的使用 B=cat(dim,a1,a2…)意义:将多个同维a1,a2…构成一个高维数组B ,dim 是高维数组B 的维数,它必须等于大于a1,a2…的阶次。
5. 多项式以及表达式 假设y=Poly(A) 如果A 二维以上的数组,则y 表示由A 得特征根确定的多项式;如果A 为一维矩阵,则y 表示有A 的元素为多项式的跟确定的多项式。
即令y=0得到的值就是矩阵A 。
例如:A=[1 -2 3]则y=poly(A)=(x-1)(x+2)(x-3)的系数1 -2 -5 6. 4221-=A 二维向量,poly(A)为1 -5 8,即(x-1)(x-4)=-4的系数。
多项式函数的引用:polyval(1) y=polyval(px,x)(2) px 为多项式的系数,x 为多项式自变量取值,y 为对应多项式的函数值多项式的拟合方法:(1) 找出函数上的已知点系列(2) 有已知点系列确定多项式,即p=polyfit(x,y,n)式中,p 为模拟的多项式,x 和y 为已知点系列,n 是多项式的最高阶次。
第四章 符号运算(1) findsym(f,n)用来查找函数y 的变量次序,n 为查找变量的个数。
Matlab基础知识启动MATLAB计算在输入一行语句后按下【Enter】键,MATLAB会立即执行并显示结果;如果要MATLAB一次执行多行语句,则在输入每行语句后按下【Shit + Enter】键,并在输入最后一行语句后按【Enter】键.内存变量查阅、删除的指令操作(1)查询内存变量在指令窗口(Command Window)中运行who、whos查询MATLAB的内存变量.这两个指令的差别仅在于获取内存变量信息的简单和详细程度不同.(2)删除内存变量clear 删除内存中的所有变量clear V1 V2 Vn 删除内存中的变量V1 V2 Vn(注意:被删除的变量间用”空格”分隔).编辑调试器的开启单击MATLAB桌面的图标,打开空白的M文件编辑器.单击MATLAB桌面上的图标,填写所选文件名后,再单击【打开】按钮,即可展示响应的M文件编辑器.用鼠标左键双击当目录窗口中的所需M文件,即可直接引出响应的M文件编辑器.HELP命令(1)运行help help将得到如何使用help的帮助(2)运行help引出包含一系列主题(topics)分类列表(3)运行help topic引出具体主题下的函数名(Fun Name)列表例如:help elmatElementary matrices and matrix manipulation.Elementary matrices.zeros - Zeros array.ones - Ones array.eye - Identity matrix.…………(4)运行help FunName获得集体函数的用法例如:help eyeEYE Identity matrix.EYE(N) is the N-by-N identity matrix.EYE(M,N) or EYE([M,N]) is an M-by-N matrix with 1's onthe diagonal and zeros elsewhere.…………(5)运行helpbrowser或helpdesk引出“帮助浏览器”.(6)运行指令demo便可以运行演示程序.Matlab简单运算及输入《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]注意:表达符号一定要在英文状态下输入.MATLAB对矩阵大小写是敏感的.如果不用clear指令清楚,或者重新赋值,那么该矩阵就会一直保存在工作空间中,直到指令窗(Command Window)关闭.《2》指令的续行输入MATLAB用3个或3个以上的连续黑点(不是省略号)表示“续行”,即表示下一行是上一行的继续.例如:S = 1 – 1 / 2 + 1/3 -1/4 +…1/5 – 1/6 + 1/7 – 1/8《3》数值、变量和表达式2、变量命名规则 变量命名规则同VC.34、运算符和表达式 ‘/’表示左除,’\’表示右除.对于数而言,左除与右除相同.即a ÷ b 可以写作a/b 或者b\a.表达式由变量名、运算符和函数名组成.符号”%”为注释符,相等于VC 中的”//”. 优先级的规定:指数优先级最高,乘除次之,加减运算级最低.括号可以改变运算顺序.(5)sqrt =,5(5)abs =,5exp(5)e =,51015e =137=.5、复数和复数矩阵 复数z a bi =+,则 real(z) = a ; imag(z) = b ;abs(z) =%给出复数的模angle(z) = arctan(b/a). %以 弧度为单位给出复数z 的相角arctan b aθ= 复数矩阵的格式: A = [1,2;3,4]*i =[I,2i;3i,4i].6.(1)直接计算 a=-8; r=a^(1/3)r= 1.0000 + 1.7321i. (2)显示所有的方根 m=[0,1,2];R= abs(a)^(1/3);Theta = (angle(a) + 2 * pi * m) / 3 ; rrr = R * exp(i * Theta) rrr =1.0000 + 1.7321i -2.0000 + 0.0000i 1.0000 - 1.7321i (3)图形表示t = 0 : pi / 20 : 2 * pi ; x = R * sin(t) ;y = R * cos(t) ;plot(x,y,'b:'),gridhold onplot(rrr(1) , '.' , 'MarkerSize' ,50 ,'color' ,'r')plot(rrr([2,3]) , 'o' , 'MarkerSize' ,15 ,'color' ,'b')axis([-3,3,-3,3]),axis squarehold offMatlab矩阵及其运算引导1、行向量的定义rowvec = [1.2 3 56];2、列向量的定义colvec = [1.2;3;56];3、逐个元素的分配矩阵B(1,1) = 1 ;B(1,2) = 2 ;B(2,1) = 3 ;B(2,2) = 4 ;B =1 23 4注意:矩阵的下标从1开始计数创建新矩阵1、1矩阵、零矩阵和单位矩阵1矩阵的所有元素全为1,零矩阵的所有元素全为零.ones(n) %建立一个n×n的1矩阵ones(m,n,……,p) %建立一个m×n×……×p的1矩阵ones(size(A)) %建立一个和矩阵A同样大小的1矩阵zeros(n) %建立一个n×n的0矩阵zeros(m,n,……,p) %建立一个m×n×……×p的0矩阵zeros(size(A)) %建立一个和矩阵A同样大小的0矩阵eye(n) %建立一个n×n的单位矩阵eye(m,n) %建立一个m×n的单位矩阵eye(size(A)) %建立一个和矩阵A同样大小的单位矩阵例如:输入OneMatrix = ones(2,3,2)则结果为:OneMatrix(:,:,1) =1 1 11 1 1OneMatrix(:,:,2) =1 1 11 1 1注意:eye命令只能用来建立二维矩阵2、随机数和随机矩阵rand %产生在0~1之间均匀分布的随机数;每调用一次给一个新的数值. rand + i*rand %产生一个复数随机数rand(n) %产生一个n×n的矩阵,其元素均为0~1之间均匀分布的随机数.rand(m,n,……,p) %产生一个m×n×……×p的矩阵,其元素均为0~1之间均匀分布的随机数.randn %产生零均值、单位方差的正太分布随机数randn(n) %产生一个n×n的矩阵,其元素均为零均值、单位方差的正太分布随机数.randn(m,n,……,p) %产生一个m×n×……×p的矩阵, 其元素均为零均值、单位方差的正太分布随机数.3、随机数种子rand(‘state’) %返回一个有35个元素的向量,其中包含随机发生器的当前状态.rand(‘state’,s) %设置随机种子发生器的状态为srand(‘state’,0) %设置随机种子发生器为它的原始状态rand(‘state’,j) %设置随机种子发生器为它的第j种子状态,j为整数rand('state',sum(100*clock)); %使用clock命令,使得随机种子发生器在每个不同的时刻都设置为不同的状态.rand(‘state’,arg) %使用MATLAB中的随机种子发生器.randn(‘state’,) %返回一个有两个元素的向量,其中包含正态随机种子发生器的状态randn(‘state’,arg) %根据arg设置正态随机种子发生器,见rand.例如astate = rand('state'); astate(1:5)ans =0.86510.51210.90210.81860.6267说明:astate(1:5)表示列出状态向量(35个元素)中的前5个元素的值4、从已存在的向量中产生新的矩阵(一)diag(A) %生成一个由矩阵A主对角线元素组成的列向量,主对角线总是从矩阵左上角开始,对于方阵来说它结束于矩阵的右下角.diag(x) %x为一个n维向量.生成一个n维方阵,它的主对角线元素取自向量x,其余元素的值都为零.diag(A,k) %生成一个由矩阵A第k条对角线元素组成的列向量。
zeros功能是返回一个m×n×p×...的double类零矩阵。
注意:m, n, p,...必须是非负整数,负整数将被当做0看待。
当没有参数时classname时,产生的是标量零矩阵,有参数时产生指定类型的零矩阵,例如zeros(3,2,'uint8')。
Ones返回一Rand1.rand(n)表示产生一个n×n的随机矩阵,n必须是整数,否则会报错。
2.rand(m,n)或rand([m n])产生m×n均匀分布的随机矩阵,元素取值在0.0~1.0。
3.X=rand(1,10);产生10个0~1的随机数。
4.Y = rand(size(A))产生一个与A同样大小的数组。
5.产生介于a到b之间的伪随机数。
6.rand('state',0)表示恢复到最初产生随机数的状态。
7.rand('state',sum(100*clock))定义随时间变化的初值。
% 投掷硬币实验x = rand(1,50000);% 50000次sum =0;k1 =0;a = zeros(1,50000);b = zeros(1,50000);for(i =1:50000)sum = sum +1;if x(i)>0.5k1 = k1 +1;enda(i)= k1;b(i)= sum;endf1 = a ./ b;figure(1)plot(b, f1), title('出现正面的频率变化曲线')figure(2)plot(b,1-f1), title('出现反面的频率变化曲线')Strcat将数组 s1,s2,...,sN 水平地连接成单个字符串,并保存于变量combinedStr中。
如果任一参数是元胞数组,那么结果combinedStr 是一个元胞数组,否则,combinedStr是一个字符数组。
学习笔记-MATLAB⼀,基操1,命令窗⼝中的标点符号:空格:⽤于输⼊变量之间的分隔符以及数组⾏元素之间的分隔符。
逗号:⽤于要显⽰计算结果的命令之间的分隔符;⽤于输⼊变量之间的分隔符;⽤于数组⾏元素之间的分隔符。
点号:⽤于数值中的⼩数点。
分号:⽤于不显⽰计算结果命令⾏的结尾;⽤于不显⽰计算结果命令之间的分隔符;⽤于数组元素⾏之间的分隔符。
冒号:⽤于⽣成⼀维数值数组,表⽰⼀维数组的全部元素或多维数组的某⼀维的全部元素。
百分号:⽤于注释的前⾯,在它后⾯的命令不需要执⾏。
单引号:⽤于括住字符串。
圆括号:⽤于引⽤数组元素;⽤于函数输⼊变量列表;⽤于确定算术运算的先后次序。
⽅括号:⽤于构成向量和矩阵;⽤于函数输出列表。
花括号:⽤于构成元胞数组。
下划线:⽤于⼀个变量、函数或⽂件名中的连字符。
续⾏号:⽤于把后⾯的⾏与该⾏连接以构成⼀个较长的命令。
“At”号:⽤于放在函数名前形成函数句柄;⽤于放在⽬录名前形成⽤户对象类⽬录。
+,-,*,/,Λ:算术运算符。
2,数值计算结果的显⽰格式:命令含义范例format short短格式(默认) 3.1416(⼩数点后4位有效)format short e短格式科学格式 3.1416e+000(5位科学计数)format long长格式 3.141592653589793(15位)format long e长格式科学格式 3.141592653589793e+000format rat有理格式355/113format hex⼗六进制格式400921fb54442d18format bank 银⾏格式 3.14(元⾓分格式)3,命令窗⼝的常⽤控制命令:clc: 清屏。
清除命令窗⼝中的所有已显⽰的内容。
clear: 删除内存中的变量。
what:列出当前⽬录下的M、MAT、MEX⽂件清单。
dir:显⽰当前⽬录或指定当前⽬录下的⽂件。
cd 路径:改变或显⽰当前⼯作⽬录;路径可省略,省略时为显⽰当前⼯作⽬录;cd ..表⽰回到上⼀级⽬录。
Matlab学习笔记——《MATLAB与科学计算》王正盛国防工业出版社一.MATLAB入门 (4)who、whos和永久变量 (4)显示格式 (4)图形 (4)二.MATLAB数值计算 (5)1.常用命令: (5)2.矩阵的保存和获取 (5)3.矩阵的运算和数组的运算 (5)4.线性方程组 (5)5.多项式 (6)6.数值积分 (6)7.一般非线性方程组求解 (6)8.微分方程的数值求解 (7)三.MATLAB的符号计算 (7)1.符号变量和符号表达式 (7)2.微积分运算 (7)3.解方程 (8)4.化简和代换 (8)的符号表达式命令 (8)四.MATLAB的图形和可视化 (9)1.二维图形 (9)2图形标记 (9)3.特殊坐标和图形 (9)4.其他命令 (9)5.填充命令 (10)6.三维图形 (10)7.符号绘图 (10)8.其他 (10)五.MATLAB程序设计 (10)1.概述: (10)2.命令文件 (11)3.程序文件 (11)六.MATLAB图形用户界面(GUI)设计 (11)七.基于MATLAB的大规模矩阵计算 (11)1.稀疏矩阵 (11)八.基于MATLAB的最优化问题求解 (12)1.线性规划问题 (12)2.非线性问题 (12)3.二次规划问题 (12)九.基于MATLAB的数据插值和拟合 (12)1.一维数据插值 (12)2.二维数据插值 (13)3.曲线拟合 (13)十.基于MATLAB的图像处理初步 (13)1.图像分类 (13)2.图像的读取和显示 (13)一.MATLAB入门who、whos和永久变量who 变量名 %检查内存变量。
Whos %检查驻留变量的详细情况。
MATLAB自定义的永久变量:eps %计算机中的最小正数 inf %无穷大pi %圆周率 NaN %不定量flops %浮点运算次数 i,j%虚数单位显示格式MATLAB中以短格式(5个有效数字)显示计算结果,可以用format命令改变数字显示格式1.变量的存储和调用1)存储当前工作空间中的变量Save %将所有的变量存入文件中Save mydate %将所有变量存入指定文件Save mydate x y z %将指定的变量存入指定的文件中2)将数据文件的变量载入当前的工作空间将save换作load即可图形1.二维图形绘制命令Plot(x,y);2.三维图形绘制命令Mesh(z);2.用户目录的建立在命令窗口输入:cd c:\mydir二.MATLAB数值计算1.常用命令:Reshape命令X=1:1:6; %产生6个元素的行向量Reshape(x,2,3); %利用X行向量产生一个2*3的向量diag命令:ar=rand(4,4) %产生一个4*4的0-1均匀随机向量d=diag(ar) %用ar的主对角元形成向量dD=diag(d)%利用d构成对角矩阵DSize:获取矩阵的行数和列数2.矩阵的保存和获取1)利用m文件利用文件编辑器编辑矩阵AM=[1 2 3;4 5 6;7 8 9]——》保存为在自己的目录下名的——》在MATLAB命令窗口中只要输入matrix就可以调用AM矩阵2)通过mat文件Mat文件是MATLAB中保存数据的一种标准格式二进制文件,通过save和load执行,如前所述3)利用外部数据文件装入到指定矩阵中假如磁盘中已有名为c:\mydir\的二进制数据文件,利用load c:\mydir\命令可以在MATLAB工作空间中产生一个名为date的矩阵3.矩阵的运算和数组的运算矩阵运算是按矩阵的运算法则进行的;数组运算无论何种操作都是对元素逐个进行的,数组运算需要在运算符前加点号。
(1)开运算先腐蚀后膨胀的过程称为开运算。
用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。
开运算函数:imopen(I,SE)(2)闭运算先膨胀后腐蚀的过程称为闭运算。
用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。
闭运算函数:imclose(I,SE)bwmorph(I,’open’/’close’)(3)腐蚀操作会去掉物体的边缘点,细小物体所有的点都会被认为是边缘点,因此会整个被删去。
再做膨胀时,留下来的大物体会变回原来的大小,而被删除的小物体则永远消失了。
腐蚀函数:imerode(I,SE)(4)膨胀操作会使物体的边界向外扩张,如果物体内部存在小空洞的话,经过膨胀操作这些洞将被补上,因而不再是边界了。
再进行腐蚀操作时,外部边界将变回原来的样子,而这些内部空洞则永远消失了。
膨胀函数:imdilate(I,SE)(5)结构元素SE的构建函数:strelSE=strel(shape,parameters);其中shape的种类有:'arbitrary'、'pair'、'periodicline'、'diamond'、'disk'、'rectangle'、'line'、'square'、'octagon'、'ball',分别是:对、周期线、钻石体、圆盘、矩形、直线、正方形、八角形、椭球体。
参数parameters 一般控制se的大小。
(6)加载文件当前路径下(mat和m文件在一起): load ***.mat;在下一级路径下: load .\下一级路径的文件名\***.mat;在上一级路径下: load ..\***.mat;在平行文件夹内 : load ..\平行的文件夹\***.mat;上两级的可以这样load ..\..\文件夹\***.mat;(7)matlab中save,load使用方法功能描述】存储文件【软件界面】MATLAB->File->Save Workspace As将变量存入硬盘中指定路径。
MATLAB学习笔记目录1、续行 (1)2、逻辑运算符及特殊运算符和关系符 (1)3、MATLAB常用函数表 (1)4、椭圆方程图像的画法 (3)5、数值显示格式的控制命令 (3)6、MATLAB常用标点的功能 (3)7、标准数组生成函数 (4)8、反向y(x)轴 (4)9、MATLAB复杂公式转化为数学代数公式的方法 (4)1、续行MATLAB用≥3个连续的点“.”表示“续行”,即表示下一行是上一行的继续。
2、逻辑运算符及特殊运算符和关系符&:与;|:或;~:非;xor:异或。
.*:数组乘;.\或./:数组左乘或右乘;.^:数组幂;==:等于;~=:不等于3、MATLAB常用函数表4、椭圆方程图像的画法1)theta=0:pi/120:2*pi;2)整理成角度的参数方程:x=a*cos(theta)+x0;y=b*sin(theta)+y0;其中x0,y0,是椭圆的中心。
a,b是长短轴的长。
然后plot(x,y),就可以了。
5、数值显示格式的控制命令6、MATLAB常用标点的功能7、标准数组生成函数8、反向y(x)轴9、MATLAB复杂公式转化为数学代数公式的方法利用MA TLAB函数latex()将公式转化为latex文本,然后将latex文本复制到MathType 等数学公式处理软件下即可。
如:syms x y zz=x^2+y^2+x*y-4*x^3*y^6;latex(z) ans =- 4\, x^3\, y^6 + x^2 + x\, y + y^2最后将- 4\, x^3\, y^6 + x^2 + x\, y + y^2复制到MathType 下即可得:36224x y x xy y -+++。
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:last11、捷径表达式可以联合转置运算符(’)来初始化行向量,或更加复杂的矩阵12、函数zeros 可以初始化任何大小的全为零的数组。
相似地,ones 函数产生的数组包含的元素全为1,eye 函数通常用来产生单位矩阵,只有对角线的元素为1.其他元素为0. 13、input 函数中有字符's'做为它的第二个参数,输入的数据就被当字符串. in2=input('enter data:','s') enter data:123 把字符串1.23 存储到in2 中.14、.数组,矩阵,向量有什么区别?答:矩阵是二维数组,向量是一维数组,矩阵和向量是数据的子集。
matlab学习笔记(入门)数据类:double,unit8,unit16,unit32,int8,int16,int32,single,char,logical!Matlab中所有数值计算都可以用double类来进行!,unit8实际中最常用的图像图像类型:亮度图像,二值图像,索引图像,RGB图像亮度图像:是数据矩阵,若是unit8或uint16则是【0,255】或者是【0,65535】,若是double 类,则像素取值是浮点数二值图像只有:0和1的逻辑数组!、简单操作:读图并显示详细情况>> f=imread('E:\image\book.pgm');whosName Size Bytes Class Attributesf 289x338 97682 uint8将图像垂直翻转:>> f=imread('E:\image\book.pgm');fp=f(end:-1:1, : );imshow(fp)将图像上下左右翻转:f=imread('E:\image\book.pgm');fc=f(end:-1:1,end:-1:1);imshow(fc)将图像二次采样并显示详情:>> fs=f(1:2:end,1:2:end);imshow(fs)>> whos fsName Size Bytes Class Attributesfs 145x169 24505 uint8将图像取出一部分:>> fg=f(200:250,200:300);imshow(fg)显示图像中的一条水平扫描线:>> plot(f(200, : )将两幅图像进行相乘:f=imread('c:\image\liangdian.jpg');g=imread('c:\image\shui guo.jpg');g=g(300:715,500:1149);f=f(1:416,1:650);fd=double(f);gd=double(g);p=fd.*gd;数组乘!pmax=max(p(:));pmin=min(p(:));取最大最小值!pn=mat2gray(p);figure,imshow(pn)亮度变化:函数imadjust是对灰度图像进行亮度变化的基本ipt工具:g=imadjust(f,[low-in high-in],[low-in high-in],gamma)Gamma为1线性映射,大于1,则映射被加权至更低(更暗的)输出值,小于一,加权至更高的输出值明暗反转图像(负片)参数不同:>> f=imread('E:\image\book.pgm');g=imadjust(f, [0 1],[1 0 ]);imshow(g)>> f=imread('E:\image\book.pgm');g=imadjust(f, [0 1],[1 0 ],2);imshow(g)>> f=imread('E:\image\book.pgm');g=imadjust(f, [0 1],[1 0 ],0.5);imshow(g)另外也可以这样:进行明暗反转:g=imcomplement(f);imshow(g)将0.5到0.75之间的灰度级拓展到0-1,可用于突出我们感兴趣的亮度带g2= g2=imadjust(f,[0.5 0.75],[0 1]);imshow(g2)这个类似上面语句,但又更多的灰色调,方法是压缩灰度级的低端并扩展灰度级的高端g3=imadjust(f,[],[],2);imshow(g3)对数和对比度拉伸变换:对数变换通过此式子完成:g=c*log(1+double(f))对8比特而言,最简便:gs=im2uint8(mat2gray(g))使用mat2gray可将值限定在0-1之间,im2uint可将值限定在0-255之间使用对数变化减小动态范围:>> g=im2uint8(mat2gray(log(1+double(f)));imshow(g)图像g与原图像相比,在视觉方面的改善效果是非常明显的函数intrans:建立一个函数intrans,利用对比度拉伸方法得到增强图像然后在主界面输入:f=imread('E:\image\book.pgm');g=intrans(f,'stretch',mean2(i m2double(f)),0.9);figure,imshow(g) 函数gscale,亮度标度的函数:g=gscale(f,method,low,high)处理图像时,即管中间没问题,但想利用8比特或者16比特格式包村或查看一副图像时会出现问题,则要将图像调度在全尺度。
Matlab笔记Matlab笔记之一---- 符号工具箱的应用ans 计算结果的缺省变量名eps 机器零阈值nargin 函数输入宗量数目nargout 函数输出宗量数目realmax 最大正实数realmin 最小正实数求极限limit(f, x, a) 若a=0,且是对x求极限,可简写为limit(f)limit(f, x, a, ’left’) 左趋近于alimit(f, x, a, ’right’) 右趋近于alimit(f, a) 求函数f在符号findsym(f)趋于a的极限syms xlimit((cos(x)-exp(-x^2/2))/x^4)syms x tlimit((1+t/(2*x))^(4*x),x,inf)1 diff(f, x) 表示对f(这里f是一个函数表达式)求关于符号变量x 的一阶导数。
若x缺省,则表示求f对预设独立变量的一阶导数。
2 diff(f, x, n) 表示对f求关于符号变量x的n阶导数。
若x缺省,则表示求f对预设独立变量的n阶导数。
1 int(f) 返回f对预设独立变量的积分值;2 int(f,v) 返回f对独立变量v的积分值;3 int(f,a,b) 返回f对预设独立变量的积分值,积分区间为[a,b],a 和b为数值式;4 int(f,v,a,b) 返回f对独立变量的积分值,积分区间为[a,b],a和b为数值式;5 int(f,m,n) 返回f对预设变量的积分值,积分区间为[m,n],m和n为符号式;collect(F) 将表达式F中相同幂次的项合并expand(F) 将表达式F展开factor(F) 将表达式F因式分解simplify(F) 利用代数上的函数规则对表达式F进行化简simple(F) 以尽可能的办法将F表达式再做化简,目的是使表达式以最少的字表示出来collect(f1)f1=sym('(a-1)^2+(b+1)^2+a+b')collect(f1)expand(f1)f2=sym('a^3-1')factor(f2)f3=sym('1/a^4+2/a^3+3/a^2+4/a+5')simplify(f3)simple(f3)simplify函数利用代数上的函数规则对表达式进行化简,如果其中的F为符号矩阵,则会对逐个元素进行化简。
by Cumber版权归作者所有,未经授权不得转载Matlab 笔记Base(基础)•num2str(x)——数字转为字符串•save('file')——存储数据load('file'))——加载数据<u>输入变量类型为字符串</u>•disp(x)输出,<u>只能输出一个变量</u>,如想输出多个,可使用向量输出。
•who——列出工作区变量whos——列出工作区变量信息•run('file')——运行脚本•datestr(clock)——时间其中,变量clock为当前时间的向量格式,datestr将向量转为字符串格式•solve(func,x)——解方程•syms x1 x2 ........ ——创建符号变量(即未知数)•换行——使用 ... 续接上行内容计时tic toc•取整round——就近取整floor——向下取整ceil——向上取整fix——向0的方向取整•设置输出显示格式(有效数字)format <u>*style*</u>格式long 长十进制小数点格式shortE 短科学记数法longE 长科学记数法hex 十六进制rat 分数数学函数绝对值——abs(x)三角函数——sin、cos、tan、sec、csc、cot反三角函数——asin(x)指数——通常使用 ^ ,特殊e^x——exp(x)开方——可以用 ^1/x ,平方根——sqrt(x)对数——函数log(x) 为lnx 函数log10(x) 为lgx取模——mod(x)标准差——std(x)逻辑符号与或非&&||~Matrix(矩阵)创建•创建向量linspace(x1,x2,n)——x1~x2之间等间距的n个数a:n:b——a,b之间,间隔为n•创建矩阵A = [1,2,3;4,5,6]——使用方括号,逗号或空格分隔元素,分号换行•创建特殊矩阵(x*y矩阵)zeros(x,y) 全0矩阵ones(x,y) 全1矩阵rand(x,y) 0~1的随机数<u>通过加减乘除来改变rand的范围</u>randn(x,y) 正态分布的随机数运算与更改•矩阵的乘法—— * 为矩阵相乘,.*为对应元素相乘•矩阵转置——transpose(A)另一种写法:A'•将矩阵转为列向量——B = A(:)•inv(A)——矩阵求逆A\b 与 inv(A)*b等价•sort(A)——按<u>升序</u>对 A的元素进行排序sort(A,dim)——A 沿维度dim的排序元素[B,Ind] = sort(A)——B为排序后矩阵,Ind为对应索引•矩阵内运算加法 sum(A) ;乘法 prod(A)规则:若A为向量,则为所有元素的运算。
1、函数eval的作用:对输入的表达式重新输出一减少系统的表达错误。
2、Global 的作用:同时用于主函数和子函数中,定义变量,使主子函数中数据共享,节省运行时间。
并在主函数中进行赋值。
4、化简式子函数:simple(f)5, plot成了图,保存成了.fig的文件。
现在没有了源码,想把数据导出怎么办?下面地址给出了一个例子具体的办法是:open(fnam); % fnam是文件名lh=findall(gca,'type','line'); % 从当前图(gca)中取出曲线的handlexc=get(lh,'xdata'); % 取出x轴数据,注意,这个x和y是以cell的数据结构保存的yc=get(lh,'ydata'); % 取出y轴数据x=xc{1};从cell转换成矩阵,可以这样写y=yc{1};-----------------------------% the datax=1:10;y=rand(size(x));fnam='afig.fig';% ...on displayfh=figure;line(x,y);% ...and savedsaveas(gcf,fnam);delete(fh);% the engineopen(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=……基本的图形控制Plot(x,y,’color-linestyle-marker’,’markersiaze’,n,’linewidth’,m)坐标系的控制图形的标注图例标注:legend(‘’,’’,’’,……)例:对程序大片的注释让其失去作用的方法:%{……………………………………}%-matlab怎么批量取消%?问:我在分布调试程序时,很多行命令都屏蔽了,调试结束后想把那些%全都...答:Ctrl+R 多行注释Ctrl+T 取消多行注释如何用matlab批处理Excel数据?紧急!!!问:我有几百组数据,是以Excel形式存在的,如何批量地输入到matlab的某...答:可以设置一个矩阵,然后将数据复制粘贴进去。
之后对矩阵进行处理,可用循环结构。
得到的结果也可以赋给一个矩阵怎么用MATLAB批量读取一个文件夹里面的图片...问:怎么用MATLAB批量读取一个文件夹里面的图片并进行处理呢?答:1 图像按编号命名:1.jpg, 2.jpg,....,n.jpg 2 循环读图I=cell(1,n); for i=1:n imageName=strcat(num2str(i),'.jpg'); I{i} = imread(imageName); end 3 处理图像----------------------- 如果图像很多,那么最好这样,第二步和第三步合并for i=1:n imageName=strcat(num2str(i),'.jpg'); I = imread(imageName); 处理当前图像end用matlab 批处理一些txt文件问:我有一批txt文件,命名不规律,但是文件的名字已经存在另一个txt文...答:首先要把数据导入:有三种常见的方式: 1. A=importdata('filename.txt') ,filename是txt文件名; 2.load filename.txt 这样也是载入n*m的矩阵;3.在MATLAB的work 文件夹下,选择想要导入的数据,用右键importdata,根据向导一步一步导入即可。
导入之后最后用plot命令绘图即可。
如果都画到一张图上,可将所绘的所有图形用origin 编辑。
Matl...请问如何用matlab批处理多个数据文件??问:情况是这样的,我编写了一个matlab程序,每次对一个数据文件(.tx...答:把.mat文件放到一起先ctrl+a再按F2 命名为XX(i).mat fori=1:100 load strcat('XX(',num2str(i),').mat''); end %strcat是全并stringmatlab声音批处理问:比如说对100个声音作端点检测,求正确率,正确率=正确检测的个数/10...答:你是.wav文件么?这样处理for i=1:100 filename=['sound' num2str(i) '.wav']; y = wavread(filename); %对y进行处理end急!!请教高手:如何用MATLAB程序高效地对大批量...问:例如我的Matlab程序是针对一幅图片处理并输出结果的,我想对1000幅...答:写一个for loop循环就好啦files = dir('*.jpg'); for k = 1:numel(files) %....处理代码... rgb = imread(files(k).name); rgb = rgb(1:1800, 520:2000, :); rgb = imresize(rgb, 0.2, 'bicubic'); imwrite(rgb, ['cropped\' files(k).name]); end 自己看着修改就好了问:matlab中怎样在命令窗口中批量执行m文件的内容。
(我现在有1.m 2.m 3.m ........许多m文件需要批量处理。
答:我的建议是你把初始变量的值都给定,例如参数a=10;把这些参数的值和你 1.m 2.m 这些个函数按照顺序都放在一个新的m文件里,例如x.m,然后运行x.m.你可以试试.用matlab对文件进行批处理问:一个文件夹下有500个文本文件,且文件名不规则,这500个文本文件均...答:思路两种方案:一种,写到临时文件,再覆盖回来。
二种,以读写方式打开。
二十分钟后再来取吧。
第二种方案:dirpath=uigetdir; filestruct=dir(dirpath); Nfile=length(filestruct); for i=1:Nfile if strcmp(filestruct(i).name,'.') || strcmp(filestruct(i).name,'..') continue; end fp=fopen([dirpath,'\',filestruct(i).name],'r+')...高分求助matlab批处理excel数据,满意再加100分问:请教:如何用matlab遍历某个文件夹下的excel文件,然后要依次读入每...答:既然知道xlsread就简单了比如文件名是在f盘下的1.xls,2.xls...100.xls 那就可以这样:data=cell(100,1); for i=1:100 data{i}=xlsread(['f:\',[i+'0','.xls']]) end ['f:\',[i+'0','.xls']] 在i=1的时候ans = f:\1.xls 以此类推能看明白吧。
其他的要求是你自己能做的。
matlab for循环中的批量保存问题问:程序如下:function enumerate(C) clc [n,p]=size(C); P=p+1; ... 答:把A设为比C多一维的矩阵,每次存储。
即:A(:,:,i)=C(B(i,:),:)matlab批量处理问题问:求一个完整程序,对批量灰度图增加对比度,反色。
然后自动保存结果...答:mark一下,晚上帮你看看。
另外,反色没啥可说的,但是对比度的话你想要个什么样的对比度算法128 + (Value - 128) * nPercent / 100 合不合适?然后你最好把你的图片发两张给我,让我调试一下程序,不然就算我写好,未必你就完全能用。
q:961085556------------------------------------------------------------------------------------...matlab怎么批量处理图片问:matlab怎么批量处理图片答:uigetfile函数可以通过对话框的形式获取文件的信息,将控制参数MultiSelect的值设为on,可以打开多个文件。
例如:[filename, pathname, filterindex] = uigetfile( '*.bmp', 'MultiSelect', 'on'); 上述命令就是获取多个bmp图像文件的命令,filename信息是文件名,pathname信息是文件的路径。
之后可以用一个for 循环,在for循环中依次打开所有...matlab如何批量处理图像问:matlab如何批量处理图像答:给你个例子吧,之前编写的一个程序的部分代码:for i=1:13 url=strcat('gradien',num2str(i),'.bmp'); %即读取路径/gradient/下的图像Imoving=imread(url);MATLAB中批量处理矩阵问:我在MATLAB中创建了例如:d1,d2,d3......这样名称的矩阵,现在我想...答:例子:d1=[1 2 3; 4 5 6] [m,n]=size(d1) % m为矩阵行数n为矩阵列数即d1为2行3列矩阵for i=1:m % 做循环取矩阵中的每一个元素进行运算for j=1:n d(i,j)=d1(i,j)*d1(i,j); %取d1中的第i行第j列元素做平方运算end end d ----------------------------------- 例子的结果输出:d1 = 1 2 3 4 5 6 m = 2 n = 3 d = 1 4 9 16 25 36求用matlab批量处理CSV(逗号分隔符)形式的txt文件的方法。