matlab基础
- 1. Matlab计算向量中的元素个数
n=size(A),当只有一个输出参数时,size函数返回的是一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。
求矩阵的行数、列数:
[M,N]=size(A);%M为行数,N为列数
或者
M=size(A,1)%M为行数
n=numel(A)该语句返回数组中元素的总数.
n=length(A):如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));如果A为空数组,则返回0;如果A是一个向量则返回A的长度。
- 2. Matlab中到底什么是axis
axis一般用来设置axes的样式,包括坐标轴范围,可读比例等
axis([xmin xmax ymin ymax])
axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 坐标轴设置
v = axis
axis auto
axis manual
axis tight
axis fill
axis ij
axis xy
axis equal
axis image
axis square
axis vis3d
axis normal 坐标轴刻度比例等
axis off
axis on 显示与否
axis(axes_handles,...) 根据axes设置
[mode,visibility,direction] = axis('state') 返回当前axes属性
- 3. MATLAB 任意三维散点画曲面图
只有x,y,z三组点的坐标,这在MATLAB里面是只能话散点图的, plot3就可以实现。
但是如果想用这三组坐标画曲面图就要进行一定的处理。
首先要明白的是,什么样的数据才可以在MATLAB里面画出曲面。是格栅式的数据。help surf 就知道应该是什么样了。也就是说,把坐标空间正交分割,必须有曲面上每个格点的坐标才能画图,那么要进行的就是数据的插值:
[X,Y,Z]=griddata(x,y,z,linspace(xmin,xmax)',linspace(ymin,ymax),'v4'); %插值
其中,linspace的作用是在xmin和xmax之间均匀取点,默认100个,v4是一种插值算法,当然也可以取其他的方法,z看做是x,y的函数,得到了X,Y,Z就满足画图的条件,直接画图。
figure
pcolor(X,Y,Z);shading interp%伪彩色图
figure
contourf(X,Y,Z) %等高线图
figure
surf(X,Y,Z)%三维曲面
要注意的是,插值的时候,谁是自变量谁是因变量对插值的效果有很大影响。代码如下:
[X,Y,Z]=griddata(x,y,z,linspace(1.486,4.271)',linspace(1.604,4.276),'v4');%插值
pcolor(X,Y,Z);shading interp%伪彩色图
figure,contourf(X,Y,Z) %等高线图
figure,surf(X,Y,Z)%三维曲面
另,subplot(m,n,p)或者subplot(mnp)此函数最常用:subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,p是指你现在要把曲线画到figure中哪个图上,最后一个如果是1表示是从左到右第一个位置。
- 4. 自带函数的用法
linspace是Matlab中的一个指令,用于产生指定范围内的指定数量点数,相邻数据跨度相同,并返回一个行向量。
调用方法:linspace(x1,x2,N)
功 能:用于产生x1,x2之间的N点行矢量,相邻数据跨度相同。其中x1、x2、N分别为起始值、终止值、元素个数。若缺省N,默认点数为100。若N=1,则返回x2。
matlab文件读入fopen函数和写入fprintf函数
fopen()是个将数据按指定格式读入到matlab中的函数。
fprintf()是个将数据按指定格式写入到文本文件中的函数。
结构体struct是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。
结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问
结构体是一群向量的集合。
NAN就是代表不是一个数据,没有意义的数,常常是分母为0的时候出现。
经常用在下面两种情况
1.数据处理时,在实际工程中经常数据的缺失或者不完整,缺省设置为nan。
2.还有就是绘图的时候,如果我们想挖掉一部分,那么nan就起作用了。
meshgrid是MATLAB中用于生成网格采样点的函数。
生成绘制3D图形所需的网格数据。在计算机中进行绘图操作时, 往往需要一些采样点,然后根据这些采样点来绘制出整个图形。在进行3D绘图操作时,涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面内对坐标进行采样得到的坐标。
[X,Y] = meshgrid(x,y)
解释:输出X的每一行的数值都是复制的x的值;输出Y的每一列的数值都是复制的y的值。
norm求向量的模
dot(A,B)向量点乘,对应位置元素相乘后相加;
cross(A,B)向量叉乘,得到的是一个向量,与A、B组成的平面垂直,满足右手法则;计算就是写成矩阵形式,求行列式的方法计算得到;
矩阵乘积,就是按矩阵乘法做。
直接在代码后面加grid on %加网格grid minor%加密网格
- 5. 程序结构
while 1
操作代码;
if(条件)
break;%跳出循环
end
end
这样就能保证一进入该段代码就能首先进行一次“操作代码”,然后用操作代码得到的结果作为if语句的判断条件。实现了do...while()结构。