1.简单二维图形
A
a=1;
b=2;
x=-4:1:6;
y=x.*a+b;
%%% '.*'运算符用于矩阵间对应元素的相乘,或数与数之间,数与矩阵之间的相乘。
% '*'运算符用于一般数学意义下的相乘运算。所以在这里这两个可替换.
plot(x,y);
grid; % grid使绘制的图有表格,便于观察变量的变化
legend('直线方程');
axis([-4 6 -2 8]);
主要指令: legend(string1,string2,string3, …,location,North等),标注,旨在对画的曲线标识和分别开.分别将字符串1、字符串2、字符串3……标注到图中,string就是plot中的曲线,顺序尽量和plot中几个变量的顺序保持一致。
B
a=-3;b=4;
r=2; % 圆心坐标+半径法
x=(a-r):0.01:(a+r);
y1=-sqrt(r.^2-(x-a).^2)+b; %下半圆
y2=sqrt(r.^2-(x-a).^2)+b; %上半圆
plot(x,y1,'b',x,y2,'b');
grid;
legend('圆方程');
axis([-6,0,1,7]);
axis square;
% axis square/将当前坐标系图形设置为方形,横轴及纵轴比例是1:1。注意axis square刻度范围不一定一样,但是一定是方形的。
主要指令: plot(X1,Y1,LineSpec,…)
plot(…,’PropertyName’,PropertyValue,…)
参数LineSpec指定曲线的曲线属性,它包括线型、标记符和颜色。且在LineSpec中设置曲线线型、标识符和颜色三项属性时,控制符的顺序不受限制并可以省略或者部分省略。也就是说’r-.‘、’-.r‘、’-.r’等形式是等效的,都表示使用红色点划线连接各个节点,各节点使用“”标识。
h = plot(…)返回由plot创建的所有曲线句柄对象的句柄。每条曲线对应一个句柄,如果有n条曲线,则h为n×1的数组。
C
clc;
clear all;
x=0:.01:10;
y1=cos(x).^4+sin(x).^4;
plot(x,y1);
hold on;
y2=1/4*cos(4*x)+1;
plot(x,y2, 'r.');
% LineSpec的属性要用一个'',顺序不定且可省略。
legend('y1','y2');
grid;
D
clc;
clear;
x=linspace(0,pi,60);
y=plot(x,sin(x)+cos(x));
set(y,'Linewidth',2,'Color','r','Marker','+','MarkerSize',3);
%%% set括号内的属性是数值的不加’’,因为加了之后相当于一个字符,不符合函数要求。比如’Linewith’后面不能’2’,而应该直接为2.
xlabel('x');ylabel('sin(x)+cos(x)');grid;
主要指令:
linspace:linspace(a1,a2,N);此函数是用来生成a1与a2之间等距的数组,间距d=(a2-a1)/(N-1)。
logspace:对数刻度。下文讲。
set:set(句柄,属性名1,属性值1,属性名2,属性值2,…);这个句柄常与上面的h=plot连用,当句柄不是h时,可用gcf或者gca。
其中gcf是之前返回的Figure对象的句柄值,gca是axes对象的句柄值
set摘自: http://blog.sina.com.cn/s/blog_7dcfa8ea01011j4v.html
stem:杆状图,上文已说过。
E
x=logspace(-2,0,500);
% x是对数刻度,范围是10^-2~10^0,500个点
plot(x,((sin(1./x)).^2)./x);
set(gca,'XScale','log','YScale','linear');
% 设置:x轴为对数刻度,y轴为线性刻度
set(gca,'XGrid','on','YGrid','on');
% 设置:会出x轴及y轴方向的坐标线
2.三维图形
A绘制球面方程组
[X,Y]=meshgrid([-1:0.05:1]); % 生成网络点坐标
Z=sqrt(1-X.^2-Y.^2)+eps;
Z((X.^2+Y.^2)>1)=0;
mesh(X,Y,abs(Z));
title('球面x.^2+y.^2+z.^2=1');
axis([-1 1 -1 1 0 1]);
注:http://www.ilovematlab.cn/thread-23305-1-1.html
a:
[A,B]=Meshgrid(a,b);生成size(b)Xsize(a)大小的矩阵A和B网格,比如[X,Y] = meshgrid(-2:.2:2, -2:.2:2);%-2到2之间有4/0.2+1=21个值,所以X、Y都是21*21大小的矩阵。
当然本例X.Y都是(2/0.05+1)^2的网格矩阵。
b.
mesh(X,Y,Z);用来生成由X,Y,Z定义的网线图,生成规则如下:
(1)X,Y分别为维数是m,n的向量,且(n,m)= size(Z),则生成网线的交叉点为(X(j),Y(i),Z(i,j));
(2)X,Y分别为矩阵,则生成网线的交叉点为(X(i,j),Y(i,j),Z(i,j))。
网线图的颜色由Z定义,即网线曲面的高度和颜色成比例。
B
a=-8:8;b=a;
[X,Y]=meshgrid(a,b);
R=sqrt(X.^2+Y.^2)+eps;
Z=sin(R)./R;
subplot(1,3,1);
mesh(Z);
title('mesh 网状图');
subplot(1,3,2);
meshc(Z);
title('meshc 网状图(带等高线)');
subplot(1,3,3);
meshz(Z);
title('meshz 网状图(带底座)');
3.其他
A 直方图
y=[5 2 1;8 7 3;9 5 6;5 1 5;4 3 2];
subplot(1,2,1);
bar(y);
legend('苹果','橘子','香蕉');
title('bar(y)');
subplot(1,2,2);
barh(y);
title('barh(y)');
x = [3.5 2.1 1.3 4.9 3.7 1.9];
bar(x,'r');
for ii=1:length(x)
str=sprintf('%4.2f',x(ii));
text(ii-0.2,x(ii)+0.2,str); % 在条上面标注
end
主要指令: bar绘纵直方图,barh绘横直方图。
B 烧饼图
subplot(1,2,1);
x=[51 34 65 45];
h=pie(x);
subplot(1,2,2);
explode=zeros(size(x)); % zeros(m*n)全0矩阵,ones(m*n)全1矩阵。
[c,offset]=min(x); % offset指的是返回x的最小值的位置(行数)
explode(offset)=1;
h=pie(x,explode); % 定义画出烧饼图的句柄,为下面标注方便
names={'工业 51';'农业 34';'服务 65';'商业 45'}; % 定义names数组。
textobjs=findobj(h,'type','text'); % 在句柄h中查找相应的属性值,并赋值给textobjs
set(textobjs,{'string'},names);
主要指令: pie绘烧饼,textobjs贴名字。
a. size():获取矩阵的行数和列数,查看尺寸的大小。
(1)s=size(A),
当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数。如length()=max(size())。
(2)[r,c]=size(A),
当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c。
b. max/min():
(1) max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。
(2) [Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。
c. pie(x);若x是矩阵,则按照各列的顺序排列.
在绘制时,如果x的元素之和大于1,则按照每个元素所占的百分比绘制;如果元素之和小于1,则按照每个元素的值绘制,绘制出一个不完整的饼形图。
注:pie(y,explode)表示,参数explode设置相应的扇形偏离整体图形,用于突出显示。
d. 我们知道text(x,y,’string’)在图形中指定的位置(x,y)上显示字符串string。而H = findobj(ObjectHandles,’属性名称‘,’属性值‘);根据限定的对象列表找出与对象的属性名称和属性值匹配的对象句柄值。
最后两行共同贴个标注。
关于句柄,再见:
http://www.cnblogs.com/CBDoctor/archive/2012/04/06/2434072.html