收藏 分销(赏)

matlab-基础函数用法总结.doc

上传人:仙人****88 文档编号:12024373 上传时间:2025-08-29 格式:DOC 页数:11 大小:81KB 下载积分:10 金币
下载 相关 举报
matlab-基础函数用法总结.doc_第1页
第1页 / 共11页
matlab-基础函数用法总结.doc_第2页
第2页 / 共11页


点击查看更多>>
资源描述
1、Size 函数用法 例如:1,2,3;4,5,6]是一个2*3的矩阵,则: d = size(X); %返回矩阵的行数和列数,保存在d中 [m,n] = size(X)%返回矩阵的行数和列数,分别保存在m和n中 m = size(X,dim);%返回矩阵的行数或列数,dim=1返回行数,dim=2返回列数 2、Corrcoef 函数用法 corrcoef(x,y)表示序列x和序列y的相关系数,得到的结果是一个2*2矩阵,其中对角线上的元素分别表示x和y的自相关,非对角线上的元素分别表示x与y的相关系数和y与x的相关系数,两个是相等的 3、sort函数用法 sort(X) 功能:返回对向量X中的元素按列升序排列的新向量。 [Y, I] = sort(A, dim, mode) 功能:对矩阵A的各列或各行重新排序,I记录Y中的元素在排序前A中位置,其中dim指明读A的列还是行进行排序。若dim=1,则按列排序;若dim=2,则按行排序。mode为排序的方式,取值'ascend'为升序,'descend'为降序 4、Legend 函数用法 legend(string1,string2,string3,┈) 分别将字符串1、字符串2、字符串3……标注到图中,每个字符串对应的图标为画图时的图标。 例如: plot(x,sin(x),‟.b‟,x,cos(x),‟+r‟) legend(„sin‟,‟cos‟) //这样就可以把”.”标识为”sin”,把”+”标识为“cos” 5、find 函数用法 找到非零元素的索引和值 语法: 1. ind = find(X) 2. ind = find(X, k) 3. ind = find(X, k, 'first') 4. ind = find(X, k, 'last') 5. [row,col] = find(X, ...) 6. [row,col,v] = find(X, ...) 说明: 1. ind = find(X) 找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linear indices:按列)返回到向量ind中。 如果X是一个行向量,则ind是一个行向量;否则,ind是一个列向量。 如果X不含非零元素或是一个空矩阵,则ind是一个空矩阵。 2. ind = find(X, k) 或 3. ind = find(X, k, 'first') 返回第一个非零元素k的索引值。 k必须是一个正数,但是它可以是任何数字数值类型。 4. ind = find(X, k, 'last') 返回最后一个非零元素k的索引值。 5. [row,col] = find(X, ...) 返回矩阵X中非零元素的行和列的索引值。 这个语法对于处理稀疏矩阵尤其有用。 如果X是一个N(N>2)维矩阵,col包括列的线性索引。 例如,一个5*7*3的矩阵X,有一个非零元素X(4,2,3),find函数将返回row=4和col=16。也就是说,(第1页有7列)+(第2页有7列)+(第3页有2列)=16。 6. [row,col,v] = find(X, ...) 返回X中非零元素的一个列或行向量v,同时返回行和列的索引值。 如果X是一个逻辑表示,则v是一个逻辑矩阵。 输出向量v包含通过评估X表示得到的逻辑矩阵的非零元素。 例1 X = [1 0 4 -3 0 0 0 8 6]; indices = find(X) 返回X中非零元素的线性索引值。 indices = 1 3 4 8 9 例2 你可以用一个逻辑表达方式定义X。例如 find(X > 2) 返回X中大于2的元素的相对应的线性索引值。 ans = 3 8 9 例4 下列表示 [r,c,v] = find(X>2) 返回包含X中非零元素的行索引值的向量 r = 1 2 包含X中非零元素的列索引值的向量 c = 1 3 包含N=(X>2)非零元素的逻辑矩阵 v = 1 1 记住,当你用find指令处理一个逻辑表达的时候,输出向量v不包含输入矩阵的非零元素的索引值。而是包含评估逻辑表达之后返回的非零值。 例5 在向量上的一些操作 x = [11 0 33 0 55]'; find(x) ans = 1 3 5 find(x == 0) ans = 2 4 find(0 < x & x < 10*pi) ans = 1 例6 对于矩阵 M = magic(3) M = 8 1 6 3 5 7 4 9 2 find(M > 3, 4) 返回前四个M>3的索引值 ans = 1 3 5 6 6、plot 函数用法 基本形式 >> y=[0 0.58 0.70 0.95 0.83 0.25]; >> plot(y) 生成的图形是以序号为横坐标、数组y的数值为纵坐标画出的折线。 >> x=linspace(0,2*pi,30); % 生成一组线性等距的数值 >> y=sin(x); >> plot(x,y) 生成的图形是上30个点连成的光滑的正弦曲线。 多重线 在同一个画面上可以画许多条曲线,只需多给出几个数组,例如 >> x=0:pi/15:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2) 则可以画出多重线。另一种画法是利用hold命令。在已经画好的图形上,若设置hold on,MATLA将把新的plot命令产生的图形画在原来的图形上。而命令hold off 将结束这个过程。例如: >> x=linspace(0,2*pi,30); y=sin(x); plot(x,y) >> hold on >> z=cos(x); plot(x,z) >> hold off 线型和颜色 MATLAB对曲线的线型和颜色有许多选择,标注的方法是在每一对数组后加一个字符串参数,说明如下: MATLAB中提供的线型属性有: 线型 说明 标记符 说明 颜色 说明 - 实线(默认) + 加号符 r 红色 -- 双划线 o 空心圆 g 绿色 : 虚线 * 星号 b 蓝色 :. 点划线 . 实心圆 c 青绿色 x 叉号符 m 洋红色 s 正方形 y 黄色 d 菱形 k 黑色 ^ 上三角形 w 白色 v 下三角形 > 右三角形 < 左三角形 p 五角星 h 六边形 以下面的例子说明用法: >> x=0:pi/15:2*pi; >> y1=sin(x); y2=cos(x); >> plot(x,y1,’b:+’,x,y2,’g-.*’) plot(1:n,ObjV{1},'-go','LineWidth',1, 'MarkerFaceColor','g') 线性 - 颜色 g 标记符o 线宽 LineWidth 1 MarkerFaceColo 标识符填充颜色 g 网格和标记 在一个图形上可以加网格、标题、x轴标记、y轴标记,用下列命令完成这些工作。 >> x=linspace(0,2*pi,30); y=sin(x); z=cos(x); >> plot(x,y,x,z) >> grid >> xlabel(‘Independent Variable X’) >> ylabel(‘Dependent Variables Y and Z’) >> title(‘Sine and Cosine Curves’) 也可以在图形的任何位置加上一个字符串,如用: >> text(2.5,0.7,’sinx’) 表示在坐标x=2.5, y=0.7处加上字符串sinx。更方便的是用鼠标来确定字符串的位置,方法是输入命令: >> gtext(‘sinx’) 在图形窗口十字线的交点是字符串的位置,用鼠标点一下就可以将字符串放在那里。 坐标系的控制 在缺省情况下MATLAB自动选择图形的横、纵坐标的比例,如果你对这个比例不满意,可以用axis命令控制,常用的有: axis([xmin xmax ymin ymax]) [ ]中分别给出x轴和y轴的最大值、最小值 axis equal 或 axis(‘equal’) x轴和y轴的单位长度相同 axis square 或 axis(‘square’) 图框呈方形 axis off 或 axis(‘off’) 清除坐标刻度 坐标轴控制:xlim和ylim函数,控制坐标显示的范围,例如xlim([0 3]);如果要x,y坐标同时控制显示,则axis([xmin xmax ymin ymax]) 多幅图形 可以在同一个画面上建立几个坐标系, 用subplot(m,n,p)命令;把一个画面分成m×n个图形区域, p代表当前的区域号,在每个区域中分别画一个图,如 >> x=linspace(0,2*pi,30); y=sin(x); z=cos(x); >> u=2*sin(x).*cos(x); v=sin(x)./cos(x); >> subplot(2,2,1),plot(x,y),axis([0 2*pi –1 1]),title(‘sin(x)’) >> subplot(2,2,2),plot(x,z),axis([0 2*pi –1 1]),title(‘cos(x)’) >> subplot(2,2,3),plot(x,u),axis([0 2*pi –1 1]),title(‘2sin(x)cos(x)’) >> subplot(2,2,4),plot(x,v),axis([0 2*pi –20 20]),title(‘sin(x)/cos(x)’) 图形的输出 在数学建模中,往往需要将产生的图形输出到Word文档中。通常可采用下述方法: 首先,在MATLAB图形窗口中选择【File】菜单中的【Export】选项,将打开图形输出对话框,在该对话框中可以把图形以emf、bmp、jpg、pgm等格式保存。然后,再打开相应的文档,并在该文档中选择【插入】菜单中的【图片】选项插入相应的图片即可\ 7、disp函数 MATLAB帮助文件里是这么写的:disp(X) displays the array, without printing the array name. 也就是说,disp显示数组,但不显示数组名称。包括你的问题在内,我总结这个函数使用需注意的三点如下: 1、这个数组可以是字符串,也可以不是,所以''不是必须的,有时候甚至是多余的。如: >> disp(sqrt(2)) 1.4142 >> disp('sqrt(2)') sqrt(2) 2、X是一个数组,或者说不能是多个数组。如disp(X,Y)就会犯错: >> disp('根号2=',sqrt(2)) Error using disp Too many input arguments. 当需要输出多个数组时,就需要把多个数组用[]括起来形成一个数组,这样就相当于disp()里只有一个变量了,在title等命令中也有用到。上面的例子应该改成: >> disp(['根号2=',num2str(sqrt(2))]) 根号2=1.4142 3、注意数据和字符串不能混在一起,这个我们经常犯错。例如,上面的例子,如果不用num2str函数的话: >> disp(['根号2=',sqrt(2)]) 根号2= 所以,disp和num2str的用法一定要搞懂,才能符合我们的使用需求。其他的单变量函数如title、xlabel等等常用的函数中,这些道理是相通的 matlab的disp函数   1.输出字符串:   >>disp('my test')   my test   2.输出数字:   >> test=3;   >> disp(test)   3   3.同时输出字符串和数字:   >> test=3;   >> disp(['my test=',num2str(test)])   my test=3 8、num2str函数   在matlab中,无论是内建函数还是工具箱函数, 2很常见, 这可能是因为2英文two和to发音相同。而2写起来也比较简单。 所以很多转换类函数都用2来命名而非to。比如number to string, 不是命名为numTostr而num2str。   函数功能: 把数值转换成字符串, 转换后可以使用fprintf或disp函数进行输出。在matlab命令窗口中键入doc num2str或help num2str即可获得该函数的帮助信息。 语法格式:   str = num2str(A)   把数组A中的数转换成字符串表示形式。   str = num2str(A, precision)   把数组A转换成字符串形式表示,precision表示精度, 比如precision为3表示保留最多3位有效数字, 例如 :   0.5345转换后为0.534,1.2345转换后为1.23。即从左边第一个不为0的数开始保留3个数值。   str = num2str(A, format)   按format指定格式进行格式化转换,通常'%11.4g'是默认的。   相关函数: mat2str, int2str, str2num, sprintf, fprintf input函数 A = input(提示信息,选项) 如果在input函数调用时采用’s’选项,则允许用户输入一个字符串。 例如想输入一个人的姓名,可采用命令:xm=input(‘What”s your name:’,’s’); 例判断输入三个实数能否构成三角形 A=input('请输入三角形的三条边:'); if A(1)+A(2)>A(3)&A(1)+A(3)>A(2)&A(2)+A(3)>A(1) p=(A(1)+A(2)+A(3))/2; s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3)));(注意 * ) disp(['三角形面积为:',num2str(s)]);(注意逗号,注意冒号为英文下的) else disp('不能构成一个三角形。') end 在命令窗口贴上代码,回车出现 请输入三角形的三条边: (提示信息) 输入 [3,4,5] (注意这里是一个数组整体输入) 得到 :三角形面积为:6 9、 repmat函数 功能 :复制和平铺矩阵 格式 B = repmat(A,m,n)       %将矩阵A复制m×n块,即B由m×n块A平铺而成。 B = repmat(A,[m n])      %与上面一致 B = repmat(A,[m n p…])   %B由m×n×p×…个A块平铺而成 repmat(A,m,n)           %当A是一个数a时,该命令产生一个全由a组成的m×n矩阵。 B=repmat(A,m,n):把矩阵A复制n*m份,并堆叠构成矩阵B,矩阵B的大小为[size(A,1)*m, size(A,2)*n]。 10、 reshape函数 B = reshape(A,m,n) 将矩阵A的元素返回到一个m×n的矩阵B。如果A中没有m×n个元素则返回一个错误。 B = reshape(A,m,n,p,...) or B = reshape(A,[m n p ...]) 把A中元素进行重塑成m×n×p×…的矩阵,特别地,指定的维数m×n×p×…的积必须与prod(size(A))相同。 B = reshape(A,...,[],...) 指定某维数后,剩余的维数长度值用占位符[]来表示,使得维数的乘积等于prod(size(A))。prod(size(A))的值必须被指定维数的乘积平分。prod(siz)的数目必须和prod(size(A))相同。 已知矩阵A: A = 1 4 7 10 2 5 8 11 3 6 9 12 例一:将矩阵A重塑成2×6的矩阵 B = reshape(A,2,6) B = 1 3 5 7 9 11 2 4 6 8 10 12 例二:使用占位符[]代替维数值 B = reshape(A,2,[]) B = 1 3 5 7 9 11 2 4 6 8 10 12
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服