MatLab图形绘制功能口令及代码
matlab绘图帮助

Matlab 运用帮助文档一、图像设定类set(gcf,'Position',[100,50,1200,700]);%设置图像位置ylim([-1.5 , 1.5]); %设置y轴坐标set(gca,'yDir','reverse','ytick',-1.5:0.5:1.5);%设置y轴的顺序,正反,以及y轴坐标的步长set(gca,'xtick',0:0.1:1); %设置x轴坐标的步长title('汉字','FontSize',16); %设置标题及其大小xlabel('汉字','FontSize',16); %设置x轴坐标的汉字及大小ylabel(汉字','FontSize',16); %设置y轴坐标的汉字及大小set(gca,'fontsize',16); %设置图像数字的大小h=legend('标识1','标识2',1); %加标识,1表示放标识的位置set(h,'FontSize',16); %设置标识框内汉字大小legend('boxoff') %去掉标识框caxis([0 34]); %显示色标范围colorbar; %加色标colorbar off % 色标去除colormap(jet); %鲁棒方式,色标模式view(2); %图像显示视角shg %图像的前端显示hold on %画图方式为叠加不刷新subplot(2,2,1); %多图画在一个图形界面内clf; %清除图形界面内的内容close(figure(1)); %关闭图片 1set(gca,'YGrid','on') ;%设置y轴方向网格化set(findobj('Type','line'),'Color','k') %设置图片内的线条颜色为黑色str=['pinlv',num2str(2)];print('-dtiff',str); %打印图像,输出格式为gif print('-djpeg',str); %打印图像,输出格式为jpeg二、文件输入输出类fid=fopen(‘文件地址’,’wb’); %文件打开,后面是读写方式fwrite(fid,a(:,i),’float32’); %以二进制格式按列写出数组fwrite(fid,a(i,:),’float32’); %以二进制格式按行写出数组fclose(fid) %关闭文件fprintf(fid,’%d %f’,y); %按文本格式写出数组fscanf(fid,’%d %f’,w); %读入文本文件load(‘文件地址.txt’); % 载入文本文件imread(’图像文件地址’); %读入图像文件xlsread(’文件地址.xls’); %读入excel文件xlswrite(‘文件地址.xls’) ; %写出excel文件xlsread(’文件地址.xls’,1,‘A4:B5’);%读入excel文件的A4到B5的矩阵fseek(fid, offset, origin)%跳过文件多少字节,offset 代表跳过的大小,origin代表初始位置,offset 可负可正,origin=‘bof’文件起始,origin=‘cof’文件当前位置,origin=‘eof’文件末尾。
matlab中figure(1)的用法

在Matlab中,figure(1)是一个常用的指令,它用于创建一个新的图形窗口,并将其标记为1号窗口。
Figure(1)的用法非常灵活,可以用于绘制各种类型的图形,包括折线图、散点图、柱状图等。
在本文中,我们将讨论Figure(1)的基本用法,并结合实际代码和示例,帮助读者更深入地了解如何在Matlab中使用Figure(1)来创建和定制图形。
1. figure(1)的基本语法在Matlab中,可以通过简单的指令figure(1)来创建一个新的图形窗口,该指令的基本语法如下:```matlabfigure(1)```执行这条指令后,Matlab将会创建一个新的图形窗口,并将其标记为1号窗口,以便区分其他图形窗口。
接下来,我们将具体讨论如何在这个新建的图形窗口中绘制各种图形。
2. 绘制折线图Figure(1)可以用于绘制折线图,下面是一个简单的示例代码:```matlabx = 0:0.1:2*pi;y = sin(x);figure(1)plot(x, y)title('Sine Wave')xlabel('x')ylabel('sin(x)')```执行上述代码后,Figure(1)窗口将会显示一个标有“Sine Wave”的折线图,横轴为x,纵轴为sin(x)。
通过这个示例,读者可以了解如何在Figure(1)窗口中绘制简单的折线图,并添加标题、横纵坐标标签。
3. 绘制散点图除了折线图,Figure(1)还可以用于绘制散点图,下面是一个简单的示例代码:```matlabx = rand(1, 100);y = rand(1, 100);figure(1)scatter(x, y)title('Scatter Plot')xlabel('x')ylabel('y')```执行上述代码后,Figure(1)窗口将会显示一个标有“Scatter Plot”的散点图,横轴为x,纵轴为y。
matlab一些基础代码含义

MATLAB(Matrix Laboratory)是一个由MathWorks公司开发的商业数学软件,主要用于算法开发、数据可视化、数据分析以及数值计算。
下面是一些MATLAB基础代码及其含义:
1.x = 1:10;:这将创建一个从1到10的整数数组。
2.y = [1 2 3; 4 5 6; 7 8 9];:这将创建一个3x3的矩阵。
3.z = [1 2 3; 4 5 6; 7 8 9]';:这将创建一个3x3的转置矩阵。
4.plot(x, y);:这将绘制一个线图,其中x是x轴,y是y轴。
5.xlabel('X-axis');:这将为x轴添加标签。
6.ylabel('Y-axis');:这将为y轴添加标签。
7.title('My Plot');:这将为图形添加标题。
8.grid on;:这将打开网格线。
9.x = rand(1,10);:这将创建一个包含10个随机数的数组。
10.y = sin(x);:这将计算每个x值的正弦值。
11.y = y .^ 2;:这将把数组y的每个元素平方。
12.z = max(y);:这将找到数组y中的最大值。
13.z = min(y);:这将找到数组y中的最小值。
14.z = sum(y);:这将计算数组y的总和。
15.z = length(y);:这将返回数组y的长度(即元素数量)。
这只是MATLAB的一些基础代码,实际上MATLAB的功能远不止这些,还包括更复杂的数值计算、信号处理、图像处理等。
MATLAB绘图函数代码及图形

第一题定积分极限微分function y=f1F=1while F~=0syms x y zF=input('请输入表达式:(变量为x,y,z) 退出-0 ')if F~=0Sel=input('请选择要进行的计算:1-微分 2-极限 3-定积分其他-返回 ') switch Selcase 1Var=input('请输入进行微分的变量: ')N=input('请输入阶数: ')disp('结果为: ')diff(F,Var,N)case 2Var=input('请输入进行极限的变量: ')Val=input('请输入极限要趋近的值: ')disp('结果为: ')limit(F,Var,Val)case 3Var=input('请输入积分变量: ')Val_1=input('请输入积分下限: ')Val_2=input('请输入积分上限: ')disp('结果为: ')int(F,Var,Val_1,Val_2)endendF=input('0-退出,其他-继续')end第二题矩阵的运算function y=f2%syms result;while(1)disp('--------------------------------------');disp('1 -Add');disp('2 -Sub');disp('3 -Multi');disp('4 -Divide');disp('0 -Exit');ch = input('Choose an item to continue:');if( ch == 0)return;endM1 = input('Enter the first Matrix:');M2 = input('Enter the second Matrix:');switch(ch)case 1,result = M1+M2;case 2,result = M1-M2;case 3,result = M1*M2;case 4,result = M1/M2;enddisp('The result is :');disp(result);end%End function第三题矩阵的操作function y=f3while(1)disp('--------------------------------------');disp('1 -转置');disp('2 -求秩');disp('3 -求逆');disp('4 -行列式');disp('0 -Exit');ch = input('Choose an item to continue:');if( ch == 0)return;endM = input('Enter the Matrix:');switch(ch)case 1,result = M';case 2,result = rank(M);case 3,result = inv(M);case 4,result = det(M);enddisp('The transform result is :');disp(result);end%End functionendendend第四题向量的判定function y=f4(vec_1,vec_2,dem_1)vec_1=input('第一个向量:')vec_2=input('第二个向量:')Sel_2=input('选择: 1-判断两向量是否共线 2-判断三向量是否共面') if Sel_2==1A=[vec_1;vec_2]if rank(A)==1disp('两向量共线!')elsedisp('两向量不共线!')endelse if Sel_2==2vec_3=input('请输入第三个向量:')dem_3=length(vec_3)if dem_3==dem_1if cro(vec_1,vec_2)*vec_3'==0disp('三向量共面!')elsedisp('三向量不共面!')endelsedisp('输入向量维数不一致!')endendend第五题向量的长度,方向角的计算点积叉积混合积及投影的计算function y=f5n=1while n~=0vec_1=input('请输入第一个向量:')dem_1=length(vec_1)Sel=input('请选择:1-计算向量的方向角,长度 2-计算向量其他运算其他-返回')if Sel==2vec_2=input('请输入第二个向量:')dem_2=length(vec_2)if dem_1==dem_2Sel_1=input('请选择运算:1-点积 2-向量积(三维) 3-投影(三维) 4-混合积(三维) 5-判断共线,共面')switch Sel_1case 5JUDGE(vec_1,vec_2,dem_1)case 1vec_1*vec_2'case 2PAN(vec_1,vec_2)case 3vec_1*vec_2'./sqrt(vec_2*vec_2')case 4vec_3=input('请输入第三个向量(三维):')dem_3=length(vec_3)if dem_3==dem_1A=PAN(vec_1,vec_2)*vec_3'else disp('维数不一致!')endendelsedisp('输入错误!')endelseif Sel==1disp('模为:')Mol=sqrt(vec_1*vec_1')A=eye(dem_1)m=1while m~=dem_1+1acos(A(m,:)*vec_1'./(sqrt(A(m,:)*A(m,:)')*Mol))*180/pim=m+1endelsen=0endendSel=input('继续计算向量的长度、方向角的计算','向量的点积、叉积、混合积及投影-1,退出-2: ')if Sel==2n=0endend第六题点到直线,平面的距离的计算function y=f6n=1while n~=0Point=input('请输入一个三维点坐标向量:')Sel=input('请选择: 1-点到直线的距离 2-点到面的距离 ')switch Selcase 1LinVec=input('请输入直线方程的方向向量:(三维)')LinPot=input('请输入直线方程所经过的点:(三维)')if length(LinVec)==length(LinPot) & length(LinVec)==length(Point)A=p(LinVec,LinPot-Point)disp('点到直线的距离为:')A*A'./(LinVec*LinVec')else disp('输入数值是非法数值!确认后请重新输入!')endPoint=input('1-继续 2-退出')if Point==2n=0endcase 2PlantVec=input('请输入平面法向量:')PlantPot=input('请输入平面上任意一点:')if length(PlantVec)==length(PlantPot) & length(PlantVec)==length(Point)disp('点到平面的距离为:')[PlantPot-Point]*PlantVec'./(PlantVec*PlantVec')disp('输入数值是非法数值!确认后请重新输入!') end endend第七题 椭圆球 function y=pic1 a = 10; b = 20; c = 10;[x,y] = meshgrid(-2:0.1:2,-2:0.1:2);xa = x.^2/a^2; yb = y.^2/b^2;xyz = (ones(size(x))-xa-yb)*c^2; z = xyz.^0.5; mesh(x,y,z);第八题 双曲抛物面 function []=pic2 a = 5; b = 5;[x,y] = meshgrid(-2:0.1:2,-2:0.1:2);xa = x.^2/a^2; yb = y.^2/b^2; z = yb-xa; mesh(x,y,z);第九题 椭圆抛物面 function y=pic3 a = 2; b = 2;[x,y] = meshgrid(-2:0.1:2,-2:0.1:2);xa = x.^2/a^2; yb = y.^2/b^2; z = xa+yb; mesh(x,y,z);第十题 单页双曲面 function y=pic4 theta=0:pi/20:2*pi rho=1:0.05:3[theta,rho]=meshgrid(theta,rho) r=sqrt(rho.^2-1)[x,y,z]=pol2cart(theta,rho,r)figure(1)hold on z=-zsurf(x,y,z) axis off第十一题 双叶双曲面 function k=pic5t1=[-2*pi:0.05:2*pi]; t2=[-1*pi:0.05:1*pi];[t1,t2]=meshgrid(-2*pi:0.05:2*pi,-1*pi:0.05:1*pi); z=0.2*sqrt(sin(t2).*sin(t2)+1);h1=mesh(2*cos(t1).*sin(t2),sin(t1).*sin(t2),z);hold onh2=mesh(2*cos(t1).*sin(t2),sin(t1).*sin(t2),-z);第十二题椭圆锥面function k=tupian4(x,y)x=[-3:0.01:3];y=[-2:0.01:2];[x,y]=meshgrid(-3:0.01:3,-2:0.01:2); z=sqrt((x/3).^2+(y/2).^2); mesh(x,y,z); hold onmesh(x,y,-z);第十三题 常见二维图形theta=0:0.1:2*pi figure(1) rho=2*thetapolar(theta,rho) title('r=at')t=-2*pi:0.1:2*pi figure(1)x=2*(t-sin(t)) y=2*(1-cos(t)) plot(x,y,'g') xlabel('x') ylabel('y') title('摆线')theta=0:0.1:10*pi figure(1)rho=sqrt(4*sin(2*theta)) polar(theta,rho,'g') hold on rho=-rhopolar(theta,rho,'g')legend('r^2=a^2sin2t',2) hold onrho=sqrt(4*cos(2*theta)) polar(theta,rho,'r') hold on rho=-rhopolar(theta,rho,'r')legend('r^2=a^2cos2t',2)theta=0:0.1:4*pi figure(1)rho=exp(0.2*theta) polar(theta,rho) title('r=exp(at)')x=-5:0.1:5y=(1/sqrt((2*pi)))*exp(-x.^2./2) figure(1)plot(x,y,'g') xlabel('x') ylabel('y')title('概率曲线 ')t=0:0.1:2*pi figure(1)x=2*(cos(t)).^3 y=2*(sin(t)).^3 plot(x,y,'g') xlabel('x') ylabel('y')title('x^2/3+y^2/3=a^2/3')theta=0:0.1:2*pi figure(1)rho=2*cos(3*theta) polar(theta,rho,'g')legend('r=asin3t',4)hold onrho=2*sin(3*theta) polar(theta,rho,'r')legend('r=acos3t')theta=0:0.1:2*pi figure(1)rho=2*cos(2*theta) polar(theta,rho,'g') legend('r=acos2t',4)t=0:0.1:2*pi figure(1) x=2*cos(t) y=2*sin(t) plot(x,y,'g') xlabel('x') ylabel('y')title('x^2/a^2+y^2/b^2=1')theta=0:0.1:2*pi figure(1)rho=2*(1-cos(theta)) polar(theta,rho)title('r=a(1-cos(t))')x=-1:(1/20):1 figure(1)subplot(2,2,1) y=asin(x)plot(x,y,'g') title('asin(x)') axis([-1 1 -2 2])subplot(2,2,2) y=acos(x)plot(x,y,'g') title('acos(x)') axis([-1 1 0 4])subplot(2,2,3)y=atan(x)plot(x,y,'g') title('atan(x)') hold on y=y+piplot(x,y,'--') hold on y=y-2*piplot(x,y,'--')axis([-1.5 1.5 -4 4])subplot(2,2,4) y=atan(x)plot(x,y,'g') title('acot(x)') x=-xy=y+pi/2plot(x,y,'--') hold on y=y+piplot(x,y,'--') hold on y=y-2*piplot(x,y,'--')axis([-1.5 1.5 -pi 2*pi])x=-5:0.1:5y=8*2.^3./(x.^2+4*2.^2) figure(1)plot(x,y,'g') hold on x=-2:0.1:2y=sqrt(4-x.^2)+2 plot(x,y,'r') hold ony=-sqrt(4-x.^2)+2 plot(x,y,'r')xlabel('x') ylabel('y')title('y=8a^3/(x^2+4a^2)')y=-5:0.1:5 figure(1)x=(2*(1+y.^2)).^(0.5)plot(x,y,'g')hold onx=-xplot(x,y,'g') xlabel('x') ylabel('y')title('x^2/a^2-y^2/b^2=1')x=-2:0.1:2 figure(1)subplot(2,4,1) y=x.^2plot(x,y,'g') title('x^2')subplot(2,4,2) y=x.^3plot(x,y,'g') title('x^3')subplot(2,4,3) y=x.^(-1)plot(x,y,'g') title('1/x')subplot(2,4,4) x=0:0.1:2 y=x.^0.5plot(x,y,'g')title('x^(1/2)') subplot(2,4,5) x=-2:0.1:2y=(x.^2).^(1/3) plot(x,y,'g') title('x^(2/3)')subplot(2,4,6) x=0:0.1:2 y=x.^(1/3) plot(x,y,'g') hold on x=-x y=-yplot(x,y,'g') title('x^(1/3)')subplot(2,4,7)x=0:0.1:2plot(x,y,'g')hold ony=-yplot(x,y,'g')title('x^(1/3)')x=-4*pi:(pi/20):4*pifigure(1)subplot(2,2,1)y=sin(x)plot(x,y,'g')title('sin(x)')subplot(2,2,2)y=cos(x)plot(x,y,'g')title('cos(x)')subplot(2,2,3)x=-(pi/2-0.0001):pi/20:(pi/2-0.0001)y=tan(x)plot(x,y,'g')title('tan(x)')hold onx=x+piplot(x,y,'g')hold onx=x-2*piplot(x,y,'g')axis([-(1.5*pi-0.0001) (1.5*pi-0.0001) -10 10])subplot(2,2,4)x=0:pi/20:(pi-0.0001)y=cot(x)plot(x,y,'g')title('cot(x)')hold onx=x-piplot(x,y,'g')axis([-(pi-0.0001) (pi-0.0001) -10 10])theta=0:0.1:4*pifigure(1)polar(theta,rho) title('rt=a')。
matlab基本命令

matlab基本命令
1. clear:清除工作空间中的变量
2. clc:清除命令窗口中的所有输出
3. close:关闭图形窗口
4. format:设置命令窗口输出格式
5. save:保存变量到文件
6. load:从文件中加载变量
7. help:查看函数的帮助文档
8. who:列出工作空间中的变量
9. whos:列出工作空间中所有变量的详细信息
10. input:从命令窗口输入变量值
11. disp:显示字符串或变量值
12. fprintf:格式化输出文本
13. plot:绘制二维图形
14. subplot:在同一个图形窗口中绘制多个子图
15. figure:创建一个新的图形窗口
16. axis:设置坐标轴范围和刻度
17. xlabel、ylabel:设置坐标轴标签
18. title:设置图形标题
19. legend:添加图例
20. hold:设置图形是否保持当前状态,以便在之后添加新数据
21. grid:显示坐标轴网格线
22. loglog、semilogx、semilogy:设置坐标轴对数刻度
23. size:返回数组的大小
24. length:返回数组的长度
25. max:返回数组中的最大值
26. min:返回数组中的最小值
27. sum:返回数组中所有元素的和
28. mean:返回数组中所有元素的平均值
29. diff:返回数组元素之间的差分
30. sort:返回数组排序后的结果。
matlab画立体蝴蝶的代码

matlab画立体蝴蝶的代码Matlab是一款强大的工具,可以帮助我们完成许多数据分析、数学建模和图像处理等工作。
在Matlab中,我们可以用简单的代码绘制出许多精美的图像,例如立体蝴蝶。
下面就来介绍一下如何使用Matlab绘制立体蝴蝶的代码。
1.准备工作我们需要在Matlab中打开一个新的文件,然后输入下面这句代码创建一个3D画布:figure('units','normalized','outerposition',[0 0 1 1])这句代码将创建一个全屏的3D画布,供我们后续用来绘制立体蝴蝶。
2.绘制蝴蝶的翅膀接下来,我们需要定义蝴蝶的两个翅膀,具体代码如下:t = 0:pi/10:2*pi;x = sin(t).*(exp(cos(t))-2*cos(4*t)-sin(t/12).^5);y = cos(t).*(exp(cos(t))-2*cos(4*t)-sin(t/12).^5);z = sin(t/2).^2.*cos(5*t+pi/2);plot3(x,y,z,'r','LineWidth',2)这段代码的意思是先设置一个参数t,然后用该参数计算出x、y、z坐标分别对应蝴蝶翅膀上的点的位置。
最后使用plot3函数将这些点连接起来,形成一个立体的蝴蝶翅膀。
这时我们已经完成了蝴蝶的一只翅膀的绘制。
接下来我们需要将另一只翅膀按照一定的规律旋转、平移后绘制出来。
代码如下:hold onfor i=1:3xx = x*cos(pi*i/3) + y*sin(pi*i/3) - 5*(cos(pi*i/3)+1)/2; yy = -x*sin(pi*i/3) + y*cos(pi*i/3);zz = z+2*i;plot3(xx,yy,zz,'r','LineWidth',2)end这段代码首先使用for循环来遍历翅膀的三个位置。
MATLAB操作命令大全

MATLAB操作命令大全1.基本操作:- clear: 清除工作区中的所有变量。
- clc: 清除命令窗口的内容。
- close all: 关闭所有图形窗口。
- help function-name: 显示与函数相关的帮助文档。
- who: 显示当前工作区中的所有变量。
- save file-name: 保存当前工作区中的所有变量到指定的文件。
- load file-name: 从文件中加载变量到当前工作区。
2.变量操作:-=:赋值操作符,将右边的值赋给左边的变量。
-+:加法操作符。
--:减法操作符。
-*:乘法操作符。
-/:除法操作符。
-^:幂运算操作符。
- sqrt(x): 计算 x 的平方根。
- abs(x): 计算 x 的绝对值。
- max(x): 返回 x 中的最大值。
- min(x): 返回 x 中的最小值。
- sum(x): 计算 x 中所有元素的和。
3.数组操作:- zeros(m, n): 创建一个 m 行 n 列的全零数组。
- ones(m, n): 创建一个 m 行 n 列的全一数组。
- eye(n): 创建一个 n 行 n 列的单位矩阵。
- size(x): 返回 x 的维度。
- length(x): 返回 x 的长度。
- reshape(x, m, n): 将 x 重新排列为一个 m 行 n 列矩阵。
- transpose(x): 将 x 的行和列互换。
4.控制流程:- if-else: 条件语句,根据条件执行不同的代码块。
- for loop: 循环语句,执行指定次数的代码块。
- while loop: 循环语句,根据条件反复执行代码块。
- break: 在循环中使用,用来跳出当前循环。
- continue: 在循环中使用,用来跳过当前循环的剩余部分。
5.统计分析:- mean(x): 计算 x 的平均值。
- median(x): 计算 x 的中位数。
- std(x): 计算 x 的标准差。
matlab画图常用命令

matlab画图常用命令clc 清理命令窗口历史内容clear 清除所有内存存储的变量值clf 清除图形whos 显示各变量信息sqrt 开方edit 开编辑窗口linspace(a,b,N) 定义等差数列,a初值,b末值,N步数(即数据个数)logspace(a,b,N) 定义等比数列,初值10^a,末值10^b,N步数(即数据个数)A.*B 矩阵点乘,对应项相乘A./B 矩阵点除A.^B 矩阵点方(指数相同也要用点方)A=[a:n:b] 定义以a为开始,步长为n的等差数列,最后一个数不超过b(n省略代表步长为1)A' 矩阵转置A=[B,C;D] 矩阵拼凑e *10^exp e^format long 后续数据显示小数点后15位format short 后续数据显示小数点后4位format bank 后续数据显示小数点后2位(不适用于复数)format long/short e 后续数据科学技术法显示,并且小数点后15位/4位format long/short eng 后续数据类似科学技术法显示,但指数保持为3的整数倍,并且有效位数(15位+1/4位+1)format + 矩阵中各元素只显示正负,零为空格format rat 以分数形式显示有理数format long/short g Matlab自定最优显示load/save +文件名载入/储存工作区数据rem(a,b) a/b的余数size(A) A矩阵的大小[行数列数]ylim([0,1])help 打开帮助界面help+帮助界面中对应标题查看对应函数的使用nthroot(x,n) x的n次实数根sign(x) x大于零输出1;x等于零输出0;x小于零输出-1log10(x) lg(x)log(x) ln(x)【注:logb(a)=ln(a)/ln(b)】fix(x) 取整round(x) 对x四舍五入floor(x) 对x向负取整ceil(x) 对x向正取整factor(x) 对x因式分解gcd(a,b) 求a,b最大公约数lcm(a,b) 求a,b最小公倍数rats(x) 用分数表示xfactorial(x) x!nchoosek(n,k) 组合数n选kprimes(x) 找出小于x的素数isprime(x) x是素数,返回1sin(),cos(),tan()... 自变量为弧度asin(),acos(),atan()... 结果为弧度max(x),min(x) x适量中的最大、最小值[a,b]=max(A) A为一行时,a为最大值,b为最大值单行位置A为m行n列时,a为m行向量,对应各列最大值,b为m行向量,对应各列最大值在该列位置多个最大值时,位置默认第一个max(A,B) A、B同大,结果为A,B中对应位置最大值的汇总矩阵mean()/median()/mode() 求平均值/中位数/众数(众数选最小值)cumsum/cumprod(A) 求A的累加/累乘结果,生成与A同大小矩阵,(列运算)单矩阵运算sum/prod(A) A矩阵列求和/求积或求行向量和/积sort(A)/sort(A,'descend') 将A升序/降序排列(行向量自身升序/降序,矩阵列升序/降序)sortrows(A,n) 按第n列排列各行,n正升序,n负降序,n省略第一列升序size(x)/[a,b]=size(x) 返回[行数,列数]/给a、b赋值length(A) 矩阵A的最大长度(行数和列数的最大值)std(A) 求A的标准差(行向量自身求解,矩阵列求解)var(A) 求A的方差(行向量自身求解,矩阵列求解)rand/randn(m,n) 生成(0,1)m×n随机数矩阵/生成均值为0,标准差为1的高斯随机数矩阵(正态分布)【通过randn(m,n)*std+mean可得到均值为mean,标准差为std的正态分布随机数矩阵】A+B*i(complex(A,B)) 生成复数或复数矩阵real(A)/imag(A) 求实部/虚部isreal(A) 实数返回1coni(A) 求共轭【或用A'也可,但会发生行列互换】x为复数时abs(x)/angle(x) 求复数的模,与水平方向的夹角realmax/realmin 返回MATLAB能够使用的最大/最小浮点数intmax/intmin 返回MATLAB能够使用的最大/最小整数pi/i/j 圆周率/虚数/虚数clock 当前时间(一般使用fix(clock)增加可读性)date 返回日期,以字符串形式eps 返回MATLAB最小间隔矩阵A(n,:)/(:,m)【A(n,end)/(end,m)】A矩阵的第n行【最后一列】/第m列【最后一行】[A,B]=meshgrid(a,b),A.*B a,b为行向量,运行结果得a*b的m*n 维矩阵【meshgrid(x)等价于meshgrid(x,x)】zeros(m)/(m,n) m*m/m*n全零矩阵ones(m)/(m,n) m*m/m*n全一矩阵diag(A) 取对角元素为列向量diag(x) 若x为行向量或列向量,结果为对角阵其他元素为零diag(A,n/-n) 对角线右上/左下第n斜线上的元素fliplr(A)/flipud(A) A矩阵列/行进行对称翻转magic(m) 创建m*m维魔方矩阵作图xlabel/ylabel('') 添加x/y轴坐标title('') 添加表头grid 使图像出现网格figure(x) 创建或打开figure x窗口,之后作图均在该窗口进行hold on 保持图像窗口中之前的图像,进而在此作图不会清除之前图像(hold off取消)plot(x1,y1,x2,y2) 同时做两个图像plot(x) x为行向量,则以点数1至n为横轴,x为纵轴作图,按顺序依次连线plot(A) A为m*n矩阵,则图像为那条曲线,每条曲线横轴均为1至m,纵轴为相应列对应值plot(x,A) 以x为横轴,A的每一列为纵轴作图(x与A同维)plot(A,B) A与B需同维,对应列分别作为横轴和纵轴作图plot('标识符') 线型:-实线:点-.点画线--虚线点型:.点o圆圈xx形状+加号*星号s方形d菱形v下三角^上三角<左三角>右三角p五角星h六角星颜色:b蓝色g绿色r红色c青色m洋红色y黄色k黑色w白色【注】,多重输出可多重设定axis([a,b,c,d]) 限制图像x轴在[a,b],y轴在[c,d]legend('string1','string2',etc) 按照作图顺序添加图注text(x,y,'string') 在(x,y)处添加文本‘string’gtext('string') 添加文本‘string’,位置由鼠标点击确定【注】(适用于string形式)输入希腊字母需要'\'+希腊字母读法;^ 可出现上标,_ 可出现下标若想输出_或^,可用\+相应符号subplot(m,n,k) 将图形窗口划分成m行n列,所有的绘图操作都在一行一行数的第k个子图中进行【注】clf针对消除一个figure窗口内的内容,而plot等一系列操作针对一个子图中,且hold on/off被限于特定一个子图中,不影响其他子图polar(x,y) 绘制极图semilogx/semilogy(x,y) x轴对数,y轴线性/x轴线性,y轴对数作图loglog(x,y) 双对数坐标作图bar(x)/barh(x) x为矢量时,按x绘制垂直/水平条形图x为矩阵时,按各行分组绘制垂直/水平条形图bar3(x)/bar3h(x) 同上,绘制三维条形图pie(x)/pie3(x) 绘制(三维)饼状图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二讲MatLab图形绘制功能一、二维平面图形基本绘图函数hold on 命令用于在已画好的图形上添加新的图形plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x及y座标。
下例可画出一条正弦曲线:x=0:0.001:10; % 0到10的1000个点的x座标y=sin(x); % 对应的y座标plot(x,y); % 绘图Y=sin(10*x);plot(x,y,'r:',x,Y,'b') % 同时画两个函数若要改变颜色,在座标对後面加上相关字串即可:x=0:0.01:10;plot(x,sin(x),'r')若要同时改变颜色及图线型态(Line style),也是在坐标对後面加上相关字串即可:plot(x,sin(x),'r*')用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范围axis([0,6,-1.5,1])MATLAB也可对图形加上各种注解与处理:xlabel('x轴'); % x轴注解ylabel('y轴'); % y轴注解title('余弦函数'); % 图形标题legend('y = cos(x)'); % 图形注解gtext('y = cos(x)'); % 图形注解 ,用鼠标定位注解位置grid on; % 显示格线fplot的指令可以用来自动的画一个已定义的函数分布图,而无须产生绘图所须要的一组数据做为变数。
其语法为fplot('fun',[xmin xmax ymin ymax]),其中fun 为一已定义的函数名称,例如sin, cos等等;而xmin, xmax, ymin, ymax则是设定绘图横轴及纵轴的下限及上限。
以下的例子是将一函数 f(x)=sin(x)/x 在-20<x<20,-0.4<y<1.2之间画出:>> fplot('sin(x)./x',[-20 20 -0.4 1.2])【例】画椭圆1232222=+y xa = [0:pi/50:2*pi]';%角度 π20- X = cos(a)*3; %参数方程 Y = sin(a)*2;plot(X,Y);xlabel('x'), ylabel('y'); title('椭圆')图形窗口的分割一般用命令subplot: subplot(2,2,1);subplot(2,3,4);MATLAB还有其他各种二维绘图函数,以适合不同的应用,详见下表。
当资料点数量不多时,长条图是很适合的表示方式:close all; % 关闭所有的图形视窗x=1:10;y=rand(size(x));bar(x,y);如果已知资料的误差量,就可用errorbar来表示。
下例以单位标准差来做资料的误差量:y = sin(x);e = std(y)*ones(size(x));errorbar(x,y,e)对於变化剧烈的函数,可用fplot来进行较精确的绘图,会对剧烈变化处进行较密集的取样,如下例:fplot('sin(1/x)', [0.02 0.2]); % [0.02 0.2]是绘图范围若要产生极座标图形,可用polar:r=cos(4*theta);polar(theta, r);对於大量的资料,我们可用hist来显示资料的分情况和统计特性。
下面几个命令可用来验证randn产生的高斯乱数分:x=randn(5000, 1); % 产生5000个μ=0,σ=1 的高斯乱数hist(x,20); % 20代表长条的个数rose和hist很接近,只不过是将资料大小视为角度,资料个数视为距离,并用极座标绘制表示:x=randn(1000, 1);rose(x);stairs可画出阶梯图:x=linspace(0,10,50);y=sin(x).*exp(-x/3);stairs(x,y);stems可产生针状图,常被用来绘制数位讯号:x=linspace(0,10,50);y=sin(x).*exp(-x/3);stem(x,y);stairs将资料点视为多边行顶点,并将此多边行涂上颜色:x=linspace(0,10,50);y=sin(x).*exp(-x/3);fill(x,y,'b'); % 'b'为蓝色feather将每一个资料点视复数,并以箭号画出:theta=linspace(0, 2*pi, 20);z = cos(theta)+i*sin(theta);feather(z);compass和feather很接近,只是每个箭号的起点都在圆点:theta=linspace(0, 2*pi, 20);z = cos(theta)+i*sin(theta);compass(z);二、三维立体图形三维绘图函数contour 二维等值线图,即从上向下看contour3等值线图contour3 等值线图fill3 填充的多边形mesh 网格图meshc 具有基本等值线图的网格图meshz 有零平面的网格图pcolor 二维伪彩色绘图,即从上向下看surf图plot3 直线图quiver 二维带方向箭头的速度图surf 曲面图surfc 具有基本等值线图的曲面图surfl 带亮度的曲面图waterfall 无交叉线的网格图三维绘图工具axis 修正坐标轴属性clf清除图形窗口clabel 放置等值线标签close关闭图形窗口figure创建或选择图形窗口getframe 捕捉动画桢grid 放置网格griddata 对画图用的数据进行内插hidden 隐蔽网格图线条hold 保留当前图形meshgrid 产生三维绘图数据movie 放动画moviein 创建桢矩阵,存储动画shading 在曲面图和伪彩色图中用分块、平滑和插值加阴影subplot在图形窗口内画子图text 在指定的位置放文本title 放置标题view 改变图形的视角xlabel 放置x轴标记ylabel 放置y轴标记zlabel 放置z轴标记函数viewview(az,el) 设置视图的方位角az和仰角elview([az,el])view([x,y,z]) 在笛卡儿坐标系中沿向量[x,y,z]正视原点设置视图,例如view([0 01])=view(0,90)view(2) 设置缺省的二维视图,az=0,el=90view(3) 设置缺省的三维视图,az=-37.5,el=30[az,el]=view 返回当前的方位角az和仰角elview(T) 用一个4×4的转置矩阵T来设置视图T=view 返回当前的4×4转置矩阵plot3命令将绘制二维图形的函数plot的特性扩展到三维空间图形。
函数格式除了包括第三维的信息(比如Z方向)之外,与二维函数plot相同。
plot3一般语法调用格式是plot3(x,y,z,S),这里x,y和z是向量或矩阵,S是可选的字符串,用来指定颜色、标记符号和/或线形(s可以省略)。
三维螺旋线例子:t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)grid %添加网格plot3可画出空间中的曲线:t=linspace(0,20*pi, 501);plot3(t.*sin(t), t.*cos(t), t); %注意用点乘 .*亦可同时画出两条空间中的曲线:t=linspace(0, 10*pi, 501);plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);正弦曲线图x=linspace(0,3*pi); % 0到3pi 间100个数据点z1=sin(x);z2=sin(2*x);z3=sin(3*x);y1=zeros(100); % 含有100个数据的0数组y3=zeros(100);y2=y3/2;plot3(x,y1,z1,x,y2,z2,x,y3,z3);利用在x-y平面的矩形网格点上的z轴坐标值,MATLAB定义了一个网格曲面。
MATLAB通过将邻接的点用直线连接起来形成网状曲面,其结果好象在数据点有结点的鱼网。
mesh可画出立体网状图.画出由函数形成的立体网状图:x=linspace(-2, 2, 25); % 在x轴上取25点y=linspace(-2, 2, 25); % 在y轴上取25点[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩阵zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵mesh(xx, yy, zz); % 画出立体网状图曲面图,除了各线条之间的空档(称作补片)用颜色填充以外,和网格图看起来是一样的。
这种图一般使用函数surf来绘制。
surf和mesh的用法类似:x=linspace(-2, 2, 25); % 在x轴上取25点y=linspace(-2, 2, 25); % 在y轴上取25点[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩阵zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵surf(xx, yy, zz); % 画出立体曲面图MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:要画出此函数的最快方法即是直接键入peaks:peaksz = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...- 1/3*exp(-(x+1).^2 - y.^2)我们亦可对peaks函数取点,再以各种不同方法进行绘图。
meshz可将曲面加上围裙:[x,y,z]=peaks;meshz(x,y,z);waterfall可在x方向或y方向产生水流效果:[x,y,z]=peaks;waterfall(x,y,z);下列命令产生在y方向的水流效果:[x,y,z]=peaks;waterfall(x',y',z');meshc同时画出网状图与等高线:[x,y,z]=peaks;meshc(x,y,z);surfc同时画出曲面图与等高线:[x,y,z]=peaks;surfc(x,y,z);contour3画出曲面在三度空间中的等高线:contour3(peaks, 20);contour画出曲面等高线在XY平面的投影:contour(peaks, 20);剔透玲珑球[X0,Y0,Z0]=sphere(30); %产生单位球面的三维坐标X=2*X0;Y=2*Y0;Z=2*Z0; %产生半径为2的球面的三维坐标surf(X0,Y0,Z0); %画单位球面shading interp %采用插补明暗处理hold on; mesh(X,Y,Z);hold off %画外球面hidden off %产生透视效果axis off %不显示坐标轴动态图形动画效果彗星状轨迹图【*例】简单二维示例。