plot(X,Y,S); % X,Y为坐标,画出一个点,S为其它属性(颜色,点的大小等)。
line([X1 X2],[Y1 Y2],S); %点A(X1,Y1)和点B(X2 Y2)之间画一条直线,S为其它属性(颜色,线的粗细等)。
详细资料可以在matlab主面板里输入 "help plot" 和 "help line"。
sita=0:pi/20:2*pi;
%%%%%%%%%%%%%%%%%%%%%%画圆%%%%%%%%%%%%%%%%%%%%%%%%%%%%
plot(r*cos(sita),r*sin(sita));%中心点在原点,半径为r的圆
plot(x0+r*cos(sita),y0+r*sin(sita));%中心点在(x0,y0)半径为rd的圆
%%%%%%%%%%%%%%%%%%%%%%%画椭圆%%%%%%%%%%%%%%%%%%%%%%%
plot(a*cos(sita+fi),b*sin(sita+fi));%椭圆,中心点在原点,长轴为a,短轴为b,方向角为fi。
plot(x0+a*cos(sita+fi),y0+b*sin(sita+fi));%椭圆,中心点在(x0,y0),长轴为a,短轴为b,方向角为fi。
如果是单位圆,可以使用rectangle('Curvature', [1 1])
MATLAB中的函数disp和display的区别
前者是直接显示数值而后者会显示n=数值
限定坐标轴的范围
axis([1 row -6.0 6.0])
plot(t, a);
改成
figure
plot(t, a);
axis([1 row -6.0 6.0])
axis要在plot的下面
求余数
rem(n,m)或mod(n,m)
n/m的余数
mod 模数求余
rem 求余数
画矩形
rectangle('Position',[x,y,w,h]) 给定起点[x,y] 矩形宽w高h
http://blog.sina.com.cn/s/blog_633edc0601011tjr.html
rectangle函数功能:创建二维矩形对象。
rectangle('Position',[x,y,w,h])
从点(x,y)开始绘制一个宽w高h的矩形,对坐标轴数据单元指定值。
注意,按指定的比例显示矩形,需要设置坐标轴数据宽高比来使得x和y轴有等长的单位。你可以用命令axisequal 或者daspect([1,1,1])。
rectangle绘制一个矩形,其默认位置是[0,0,1,1],默认曲率是 [0,0](也就是说,没有曲率)。
rectangle(...,'Curvature',[x,y])指定矩阵边的曲率,可以使它从矩形到椭圆不同变化,水平曲率x为矩形宽度的分数,是沿着矩形的顶部和底部的边进行弯曲。竖直曲率y为矩形高度的分数,是沿着矩形的左面和右面的边进行弯曲。x和y取值范围是从0(无曲率)到1(最大曲率)。值[0,0]绘制一个成直角的矩形,值[x,y]绘制一个椭圆。如果仅仅指定曲率的一个值,那么在水平曲率和竖直曲率都有相同的值。
h =rectangle(...)返回创建矩形对象的句柄。
备注:矩形对象是2维的,仅仅能在[0 90](i.e.,view(2))范围内被绘制,矩形对象是坐标的子对象,被定义在坐标轴数据内。
例:rectangle('position',[1,1,5,5],'curvature',[1,1],'edgecolor','r','facecolor','g');
'position',[1,1,5,5]表示从(1,1)点开始高为5,宽为5;
'curvature',[1,1]表示x,y方向上的曲率都为1,即是圆弧;
'edgecolor','r'表示边框颜色是红色;
'facecolor','g'表示面内填充颜色为绿色。
其图形见下图:
MATLAB中调色
x=linspace(0,pi);
plot(x,sin(x),'color',[.5 .5 .5]) %三个分量分别代表红绿蓝的值,自己调即可。
全1就是白色,全0就是黑色。按照这个尺度把0.5该大一点,比如0.7即可。
矩阵中删除某一元素
如果矩阵中删除某一元素,就不在是矩阵了,而是将矩阵重新排列得到一个向量
求矩阵个数
[r c]=size(x)
r*c
numel(x)
MATLAB 变量命名
规则一:文件名首字符不能是数字或下划线。
规则二:文件名不能与Matlab的内部函数名相同。M文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成。原因是简单的单词命名容易与Matlab内部函数同名。
规则三:M文件名中不能有空格。若需要用两个或以上单词组合作为文件名,各单词必须直接连接组合(可把每个单词首字母大写以作区分或使用下划线)。
Matlab中所有的变量都是用矩阵形式来表示的,即所有的变量都表示一个矩阵或者一个向量。其命名规则如下:
(1)变量名对大小写敏感;
(2)变量名的第一个字符必须为英文字母,其长度不能超过31个字符;
(3)变量名可以包含下连字符、数字,但不能包含空格符、标点。
关系和逻辑运算作为所有关系和逻辑表达式的输出,Matlab把任何非零数值当作真,把零当作假。所有关系和表达式的输出,对于真,输出为1;对于假,输出为零。
Matlab关系操作符包括所有常用的比较:
< :小于;
> :大于;
Matlab关系操作符能用来比较两个同样大小的数组,或用来比较一个数组和一个标量。在后一种情况,标量和数组中的每一个元素相比较,结果与数组大小一样。
Matlab逻辑操作符包括:& ——与 ;| ——或;~ ——非 。
设置坐标轴的间隔
- figure;
- axes;
- axis([0 100 0 1000])
- set(gca,'XTick',0:20:100);
- set(gca,'YTick',0:200:1000);
set(gca,'xtick',[0:20:100],'ytick',[0:200:1000])
meshgride的用法
meshgrid(x,y)产生两个矩阵,第一个矩阵是由x作为行向量组成,第二个向量由y作为列向量组成
meshgrid(x,x)=meshgrid(x),即也产生两个矩阵。
比如 x=1:1:4,则x=[1 2 3 4]
那么生成的两个矩阵分别是
[1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4]
和
[1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4]
-pi:0.1:pi之间共包含63个数,所以生成两个63*63的矩阵,分别是由[-pi:0.1:pi]作为行向量,
[-pi:0.1:pi]'作为列向量组成。
meshgrid函数用两个坐标轴上的点在平面上画格。
用法:
[X,Y]=meshgrid(x,y)
[X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的
[X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体图
例如例题1:
x=-3:1:3;y=-2:1:2;
[X,Y]= meshgrid(x,y);
这里meshigrid(x,y)的作用是产生一个以向量x为行,向量y为列的矩阵,而x是从-3开始到3,每间隔1记下一个数据,并把这些数据集成矩阵X;同理y则是从-2到2,每间隔1记下一个数据,并集成矩阵Y。即
X=
-3 -2 -1 0 1 2 3
-3 -2 -1 0 1 2 3
-3 -2 -1 0 1 2 3
-3 -2 -1 0 1 2 3
-3 -2 -1 0 1 2 3
Y =
-2 -2 -2 -2 -2 -2 -2
-1 -1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0
1 1 1 1 1 1 1
2 2 2 2 2 2 2
axes('Position',[0.9,0.11,0.04,0.8],'TickDir','out');是什么意思?
Position是定义坐标系在图中的位置,4维向量中的元素(由左向右)依次定义了:坐标系最左下角定点的横坐标(或横向位置);
坐标系最左下角定点的纵坐标;
坐标系的总宽度;
坐标系的总高度;
TickDir是控制尺标的位置。选out意味着尺标将会标在坐标轴的外侧,而选in意味着尺标将会标在坐标轴的内侧。(你试试就知道区别在哪里了)。对于2维图,默认的是in,而对于3维的图像,默认是out。这里画的是2维图,所以想让尺标标在坐标轴的外侧,就必需加上 'TickDir','out'。
gcf 返回当前Figure对象的句柄值
gca返回当前axes对象的句柄值
gco返回当前鼠标单击的句柄值,该对象可以是除root对象外的 任意图形对象,并且Matlab会把当前图形对象的句柄值存放在Figure的CurrentObject属性中
Axes对象的属性
(1)title('new','color','r');给坐标轴命名为new,红色
title({'this title','has 2 '});命名为两行的标题
(2)Units:有效值为pixels/normalized/inches /centimeters/points/characters
决定各种位置属性的度量单位,相对于窗口左下角为基准。当设置为Pixels时, 以像素为单位;当设置为normalized时,以坐标为单位,屏幕的左下角为[0,0],右上角为[1.0,1.0]。
(3)grid on:在图像中显示网格。
(4)children:控制axes对象的子对象,即image\light\line\patch \rectangle\surface和text等对象,可通过get(gca,'children')来返回当前坐标轴的子对象构成的句柄值向量。
(5) 字体属性:
Fontangle字体角度(正常normal或斜体italic/oblique)
Fontname字体名称
fontsize 字体大小(单位由Fontunits决定)
fontunits字体单位(points/normalized/inches /centimeters/pixels)
fontweight字体粗细(normal/bold/light/demi)
gridlinestyle 决定坐标轴网格线的样式,‘-’为实线‘- -’为虚线‘:’为点线‘-.’为点虚线
plot(1:10);grid on;set(gca,'gridlinestyle','-.');将当前坐标轴显示的网格线为点-虚线
(6)linewidth 定义X,Y和Z轴的轴线宽度(以点单位定义)
(7)NextPlot:有效值为add|replace|replacechildren,默认为 replace
add表示使用当前的坐标轴,把新的图形对象加到此坐标轴中是一般保留的做法,replace表示重新设置坐标轴的所有属性 (Position除外),也就是在绘图前会删除当前坐标轴和它的子对象。replacechildren表示移除当前坐标轴中所有子对象,但不重新设置 坐标轴的所有属性
(8)Outerposition决定坐标轴外边界的位置。由位置向量[left,bottom,width,height]组 成,其中left,bottom表示相对于绘图窗口左下角的位置,width,height表示区域尺寸,默认为[0 0 1 1]
(9)Position 由位置向量[left,bottom,width,height]组成,决定坐标轴位置
(10)Tag定义本坐标轴的卷展栏,因为每一个对象都有 自己唯一的识别码即tag,以方便findobj函数查找坐标轴句柄值。
(11)visible决定坐标轴是否可见
(12)set(gca,'xgrid','on') 绘制X轴垂直网格线
set(gca,'gridlinestyle',':','linewidth',3)设置网格线线条类型和宽度
set(gca,'box','on') 将图轴方框绘制出来
(13)set(gca,'xscale','linear');将X轴刻度设为线性
set(gca,'yscale','log'); 将Y轴刻度设为对数
(14)disp()显示一个数组,但不显示其数组名称
fill函数
fill(X,Y,ColorSpec) 其中最后一个参数就是指定颜色的
find函数
http://jingyan.baidu.com/article/3c343ff71444890d3679635d.html
sub2ind的用法
blog.sina.com.cn/s/blog_64eb03bb0101bmek.html下面这个例子比较直观。
在命令窗口输入: >> A=[4 7 2 9 8;3 9 1 4 3;1 5 9 6 4;8 3 7 1 0] A = 4 7 2 9 8 3 9 1 4 3 1 5 9 6 4 8 3 7 1 0
则A中每个元素对应的索引如下(MATLAB中数据是按列的方式存储的): 1 5 9 13 17 2 6 10 14 18 3 7 11 15 19 4 8 12 16 20
ind=sub2ind(siz,I,J):siz表示要转换的矩阵的行列数,I是要转换矩阵的行标,J是要转换矩阵的列标。I,J的行列数必须相同。ind为输出参数,其行列数与I,J相同。ind即为索引。
在命令窗口中输入:
>> ind=sub2ind(size(A),[1,2;3,4],[1,1;2,2])
则显示
ind =
1 2
7 8
从运算结果可以看出,在矩阵A中,下标(1,1)的索引值为1,下标(2,1)的索引值为2,下标(3,2)的索引值为7,下标(4,2)的索引值为8
解释 M(Ind)=1; % 改变覆盖状态
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
>> Ind=[1 2;3 4]
Ind =
1 2
3 4
>> M(Ind)=1
M =
1 0 0 0 0
1 0 0 0 0
1 0 0 0 0
1 0 0 0 0
0 0 0 0 0
>> s=sum(M(1:end)) %M(1:end)为 1 1 1 1 0.....
s =
4
matlab中sum函数求和
>> a=[1 1 1 0 0];
>> sum(a)
ans =
3
>> sum(a,2)
ans =
3
sum(x,2)表示矩阵x的横向相加,求每行的和,结果是列向量。
而缺省的sum(x)就是竖向相加,求每列的和,结果是行向量。
A>0的结果是得到一个逻辑矩阵,大小跟原来的A一致,
A中大于零的元素的位置置为1,小于等于零的位置置为0。
所以横向求和以后,就是求A中每行大于零的元素个数。
例如
>> A=randn(5)
A =
>> sum(A)
ans =
>> sum(A>0)
ans =
>> sum(A<0)
ans =
>> sum(A,2)
ans =
>> sum(A>0,2)
ans =
sum(A<0,2)
ans =
matlab 中 end 函数用法
end函数返回下标的最大值 。
例1:a=[1 2 3 4 5 6 7 8]
例2:>> a=[1 2 3 4; 5 6 7 8;9 10 1112]
a =
>> a(2:end,2:end)%指的是从第二行至最后一行、第二列至最后一列的值
ans =
>> a(2:end) %从第2个到最后一个值
ans =
>>a(2:end,3:end)
ans =
>>a(3:end,3:end)
ans =
num2str
number to string 函数功能: 把数值转换成字符串, 转换后可以使用fprintf或disp函数进行输出。
MATLAB 延时函数
PAUSE Wait for user response. PAUSE等待用户的相应。
PAUSE(n)函数是程序停止n秒后继续,n可以使分数或小数。函数的分辨率根据平台而定,大多数平台都能满足0.01秒的精度。
可以使用PAUSE让程序停止运行直到用户敲击键盘。
PAUSE OFF 关闭之后所有的PAUSE函数的暂停功能。
PAUSE ON 打开之后的所有PAUSE函数的功能。
nargin
nargin是用来判断输入变量个数的函数,这样就可以针对不同的情况执行不同的功能。通常可以用他来设定一些默认值,如下面的函数。
例子,函数test1的功能是输出a和b的和。如果只输入一个变量,则认为另一个变量为0,如果两个变量都没有输入,则默认两者均为0。
function y=test1(a,b)
if nargin==0
a=0;b=0;
elseif nargin==1
b=0;
end
y=a+b;
函数多返回值的实现
function [sinx,cosx]=myfun_1(x)
sinx=sin(x);
cosx=cos(x);
%%%%%%%%%%%%
x=0:1:2*pi;
[sx,cs]=myfun_1(x)
matlab如何判断点在多边形内部或边界上
inpolygon 函数http://jingyan.baidu.com/article/59703552fc0e8d8fc0074037.html
对一系列散点如何利用matlab绘制凹多边形?
http://jingyan.baidu.com/article/574c52192a848d6c8c9dc157.html
在MATLAB中颜色.r和r的区别
in=inpolygon(X,Y,DX0,DY0);% 要判断的坐标在前 区域范围在后
plot(DX0,DY0,X(in),Y(in),'.g',X(~in),Y(~in),'.k');%区域范围在前 判断的坐标在后
.g的情况
g的情况
相关 plot(x1,y1,'r+')
+只是点的表现形式,就是每个点用+表示,然后各个点(+)相连成线
为了了解其作用 MATLAB代码如下
function t=test4
x=0:0.1:5;
y=2*x.^2;
z=x+2;
m=x*2;
plot(x,y,'k+',x,z,'r',x,m,'.g')
结果:
关于矩阵的合并
A=[1,2],B=[3,4] ;
C=[A,B];
C=[1 2 3 4];
D=[A;B];
D=[1 2;3 4]