MATLAB相关

两个函数的格式不同:
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逻辑操作符包括:& ——与 ;| ——或;~ ——非 。


设置坐标轴的间隔

  1. figure;
  2. axes;
  3. axis([0 100 0 1000])
  4. set(gca,'XTick',0:20:100);
  5. 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; % 改变覆盖状态 
M =

     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 =

  -0.4326   1.1909  -0.1867   0.1139   0.2944
  -1.6656   1.1892   0.7258   1.0668   -1.3362
   0.1253  -0.0376  -0.5883   0.0593   0.7143
   0.2877   0.3273   2.1832  -0.0956   1.6236
  -1.1465   0.1746  -0.1364  -0.8323   -0.6918

>> sum(A)

ans =

  -2.8316   2.8444   1.9976   0.3120   0.6043

 

>> sum(A>0)

ans =

                3

 

>> sum(A<0)

ans =

                2

 

>> sum(A,2)

ans =

   0.9800
   -0.0200
    0.2730
    4.3261
   -2.6324

 

>> sum(A>0,2)

ans =

    3
    3
    3
    4
    1

sum(A<0,2)

ans =

    2
    2
    2
    1
    4

matlab 中 end 函数用法

end函数返回下标的最大值 。

例1:a=[1 2 3 4 5 6 7 8]

   那么a(3:end)=[3 4 5 6 78],指的是从第3个到最后一个。

例2:>> a=[1 2 3 4; 5 6 7 8;9 10 1112]

a =

             4
             8
      10   11    12

>> a(2:end,2:end)%指的是从第二行至最后一行、第二列至最后一列的值

ans =

          8
   10   11    12

>> a(2:end) %从第2个到最后一个值

ans =

               10         11          12

>>a(2:end,3:end)  %指的是从第二行至最后一行、第三列至最后一列的值

ans =

       8
   11    12

>>a(3:end,3:end)  %指的是从第三行至最后一行、第三列至最后一列的值

ans =

   11    12

num2str

number to string 函数功能: 把数值转换成字符串, 转换后可以使用fprintf或disp函数进行输出。

MATLAB 延时函数

 
最近在做路径规划,期间想看看规划的路径怎么样,想用动画演示出来,于是想到了MATLAB有没有延时函数,在指定时间后播放下一动作,就可以模仿真实的运动情况。搜索结果如下,供大家分享。
PAUSE Wait for user response. PAUSE等待用户的相应。
      PAUSE(n)pauses for n seconds before continuing, where n can also be afraction. The resolution(分辨率) of the clock is platform specific.Fractional pauses of 0.01 seconds should be supported on mostplatforms.
PAUSE(n)函数是程序停止n秒后继续,n可以使分数或小数。函数的分辨率根据平台而定,大多数平台都能满足0.01秒的精度。
      PAUSE causesa procedure to stop and wait for the user to strike any key beforecontinuing.
可以使用PAUSE让程序停止运行直到用户敲击键盘。
      PAUSE OFFindicates that any subsequent PAUSE or PAUSE(n) commands should notactually pause. This allows normally interactive scripts to rununattended.
PAUSE OFF 关闭之后所有的PAUSE函数的暂停功能。
      PAUSE ONindicates that subsequent PAUSE commands should 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]

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值