MATLAB概述

chapter1、 matlab基础知识

元素索引:
三维矩阵和其他数据结构在函数自变量中一次使用行、列和页维数次序。对于多维矩阵有两个索引原理,最自然的就是矩阵索引,给出了每个元素在每一维中的一个位置。
线性索引:
一些命令把整个矩阵说明为一个长列元素,如果所有的元素被放在一行上,那么各元素索引号说明了一个指定矩阵的索引给出的某个位置
由两个二维数组构建一个三维数组:
A=[1 2 3;4 5 6;7 8 9];
B=[11 12 13;14 15 16;17 18 19];
C(:,:,1)=A;
C(:,:,2)=B;

***************************************
MATLAB中数据是按列的方式存储
>> 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

sub2ind就是将下标转换为索引
sub2ind
ind2sub函数就是在指定矩阵尺寸(size)前提下将给定的index转化成行列形式
ind2sub
***************************************


matlab数据类型和转换函数

double  双精度浮点数,每个存储的双精度为64位
char 用于存储字符,每个存储的字符16位
sparse  用于存储稀疏矩阵,由一个sparse使用的内存是4+(非0元素数*16)
unit8 是一个无符号的8位整型数。数学函数并不对使用到的这种数据类型进行定义

逻辑函数
iscell(x) 判断x是否是细胞矩阵
isfield(x) 判断x在一个结构中是否是一个域
isfinite(x)返回一个与x相同大小的向量,这个x包含有限元的位置为1,其他位置为0
islogical(x) 如果x是一个逻辑向量,返回1,否则,返回0
isnumeric(x) 如果x是一个数值向量,返回1,否则,返回0
isstr(x) 字符串
isstruct(x) 结构
isobject(x) 对象
logical(x) 返回一个可以使用的逻辑向量,例如逻辑索引或逻辑测试


>> x=repmat([1,0],1,5)

x =

     1     0     1     0     1     0     1     0     1     0

MATLAB概述_第1张图片

如果不被用户删除或者重命名,每个被定义的变量将在整个过程中保留,要删除变量,用clear命令
pack重组和压缩已分配的内存碎块,当matlab的内存满后,可以使用命令pack而不是清除任何变量来得到更多的空间
将会产生如下情况:
1、所有变量都会保存在磁盘上的一个临时文件pack.temp中
2、删除主内存中的内容
3、所有变量将从pack.temp加载到主内存中
4、删除文件pack.tmp

pack filename 用文件filename做临时文件,重组和压缩已分配内存

matlab中的命令实际上可以当做函数,把字符串看作自变量,这就意味着有两种描述:
command argument == command('argument')

算数表达式和数学函数

MATLAB概述_第2张图片MATLAB概述_第3张图片

取整命令和相关命令
round(x) 求最接近x的整数,如果x是一个向量,则适用于所有元素
fix(x) 求0方向最接近的整数,负x向上四舍五入 正x向下四舍五入
floor(x) 求小于等于x的最接近的整数(向上取整)
ceil(x) 求大于等于x的最接近的整数(向下取整)
rem(x,y) 整除x/y的余数
gcd(x,y) 整数x和y的最大公因子
[g,c,d]=gcd(x,y) 求g c d满足g=xc+yd
lcm(x,y) 求正整数x和y的最小公倍数,也能用于决定最小公因子
[t,n]=rat(x)  由有理数t/n求x的近似值,这里的t和n是整数,相对误差小于10^-6
[t,n]=rat(x,tol)   与上相同相对误差小于tol
rat(x) 求x的连续分数表达式
rat(x,tol)  求带相对误差tol的的连续的分数表达式


>> x=-1.49
>> round(x)
>> fix(x)
>> floor(x)
>> ceil(x)


>> [t,n]=rat(sqrt(2))
t =

        1393


n =

   985

>> differ=sqrt(2)-t/n

differ =

  3.6440e-007





%% 二维数组作图
t=linspace(0,2*pi,100);
x=cos(t)-sin(3*t);
y=sin(t).*cos(t)-cos(3*t);
plot(x,y)

%% 函数分析
function fval = func(x)
fval = x.*exp(x.^2)-exp(x.^2)-sin(x.^3);

%fzero 找寻一个函数的零点
>> xsolv=fzero('func',3)

xsolv =

    1.2194
%求0点处的fval值
>> xiszero=func(0)

xiszero =

    -1

%fmin 找寻一个范围内的函数的最小值(fmin是一个自定义函数)
mpoint=fmin('func',0.5,1)


%% 线性系统与特征值
%线性求解:Ax=b
A=[3 1 -1;1 2 4;-1 4 5];
b=[3.6;2.1;-1.4];
fval=A\b

fval =

    1.4818
   -0.4606
    0.3848

%矩阵A的特征值求解
[EigenVectors,EigenValues]=eig(A)

EigenVectors =

   -0.3129    0.9482   -0.0553
    0.7756    0.2887    0.5613
   -0.5482   -0.1328    0.8258


EigenValues =

   -1.2305         0         0
         0    3.4445         0
         0         0    7.7860


矩阵EigenVectors的列是A的特征向量

EigenValues的对角线元素是特征值

矩阵A是对称的,因此,所有的特征值是实数,三个特征向量互相正交





%% 曲线的拟合与插值
%拟合
x=[1 1.5 3 4 5 6 6.5 7 8];
y=[1.2 1 1.7 2.5 2 2.3 2.5 3 3.1];
p1=polyfit(x,y,1); %p1=A向量等于一次多项式的系数
linc=polyval(p1,x);%linc=A向量等于x点上多项式p1的值
plot(x,linc,'--rs','LineWidth',2,...
                'MarkerEdgeColor','k',...
                'MarkerFaceColor','g',...
                'MarkerSize',10);

p7=polyfit(x,y,7); %p7=A向量等于7次多项式的系数
xx=1:.25:8; %xx=所有想要进行多项式计算的点
polc=polyval(p7,xx);%polc=A向量等于xx点上多项式p7的值
plot(xx,polc,'--rs','LineWidth',2,...
                'MarkerEdgeColor','k',...
                'MarkerFaceColor','g',...
                'MarkerSize',10);

%插值 二维插值和三维插值


%% 统计





%%傅里叶变换和信号分析


%%常微分方程


%%偏微分方程


%%matlab中的编程







%%图形用户界面


你可能感兴趣的:(MATLAB概述)