小程序

下载安防E站

官方微信

头条号

百家号

智慧城市网>监控摄像头>矩阵_仿松下宽动态枪机_WV-CP500

矩阵_仿松下宽动态枪机_WV-CP500

2011年07月28日 15:22:36来源:深圳市远望者科技有限公司关键词:仿松下摄像机,仿松下宽动态枪机,仿松下半球,仿松下监控摄像机

仿松下宽动态枪机

:李殷杰,:

3.1 矩阵的生成
1)直接输入 2)函数生成 3)文本文件
? 简单数组
    MATLAB的运算事实上是以数组 (array) 及矩阵 (matrix) 方式在做运算,而这二者在MATLAB的基本运算性质不同,数组强调元素对元素的运算,而矩阵则采用线性代数的运算方式。
宣告一变数为数组或是矩阵时,如果是要个别键入元素,须用中括号[ ] 将元素置于其中。数组为一维元素所构成,而矩阵为多维元素所组成,例如

  » x=[1  2  3  4  5  6  7  8] ;        %一维 1x8 数组
  » x = [1  2  3  4  5  6  7  8; 4  5  6  7  8  9  10  11] ;
                   % 二维 2x8 矩阵,以“;”或回车分隔各行的元素,以“,”或空格分隔各列的元素
  » x = [1  2  3  4  5  6  7   8           % 二维 2x8 矩阵,各列的元素分二行键入
         4  5  6  7  8  9  10  11] ;
  » x(3)              % x的第三个元素
  » x([1 2 5])         % x的*、二、五个元素
  » x(1:5)            % x的第前五个元素
      ans = 1     4     2     5     3
  » x(10:end)         % x的第十个元素后的元素
      ans = 8     6     9     7    10     8    11
  » x(10:-1:2)         % x的第十个元素和第二个元素的倒排
      ans = 8     5     7     4     6     3     5     2     4
  » x(find(x>5))       % x中大于5的元素
  » x(4)=100          %给x的第四个元素重新给值
  » x(3)=[]            %  删除第三个元素
  » x(16)=1           % 加入第十六个元素

? 建立数组(向量)
    上面的方法只适用于元素不多的情况,但是当元素很多的时候,则须采用以下的方式:
    » x=(0:0.02:1);         % 以:起始值=0、增量值=0.02、终止值=1的矩阵(用“:”生成)
» x=linspace(0,1,100); 
            % 利用linspace,以区隔起始值=0终止值=1之间的元素数目=100(线性等分向量)
    »a=[]                 %空矩阵
    » zeros(2,2)            %全为0的矩阵
    » ones(3,3)            %全为1的矩阵
    » rand(2,4);            % 随机矩阵
    »a=1:7, b=1:0.2:5;      %更直接的方式
    »c=[b a];              %可利用先前建立的数组 a 及数组 b ,组成新数组
    » a=1:1:10;
    » b=0.1:0.1:1;
    » a+b*I               %复数数组

? 子矩阵
  通过一个矩阵产生另一个矩阵的方法(上面已经有例子)
  假如一个矩阵A
则 A(m1:m2 ,n1:n2)


3.2 矩阵的运算

? 经典的算术运算符。
       运算符      MATLAB表达式
加 + a+b
减 - a-b
乘 * a*b
除 / 或 \ a/b或a\b
幂 ^ a^b
    » a=1:1:10;
    » b=0:10:90;
    » a+b
    » a.*b            %注意这里a后加了个“.”,表示数组相乘, 是元素对元素的乘积
    » a*b            %表示矩阵相乘, 要求矩阵a的列数与矩阵b的行数一致
    » a/b            %矩阵右除   inv(a)*b
    » a\b            %矩阵左除   a*inv(b)
    » a./b           %数组右除,数组中对应元素相除,  a(i,j)/b(i,j)
» a.\b           %数组左除,数组中对应元素相除   b(i,j)/a(i,j)
» a^b           %矩阵乘方,涉及到特征值和特征向量的求解。
» a.^b          %数组乘方,a和b中对应元素的乘方,即a(i,j)的b(i,j)次方。
说明:在这里特别要注意一下有没有加点“.”之间的区别,这些算术运算符所运算的两个阵列是否需要长度一致。

? 矩阵转置运算
   通过在矩阵变量后加’ 的方法来表示转置运算
    » a=1:1:10;
    » b=0:10:90;
    » a'
    » c=a+b*i;
    » c'


3.3 矩阵函数

? MATLAB常用数学函数
    基本数学函数一般都可以作为矩阵函数。如三角函数、指数对数函数等。
    » a=1:1:10;
    » b=0:10:90;
    » sin(a)
    » exp(b)
    » sign(a)
    » mean(b)

? 求矩阵的长度的函数
   » A=[10, 2, 12; 34, 2, 4; 98, 34, 6];
   » size(A)     % 矩阵A的行列大小  3*3
   » length(A)   % 返回size(A) 中的zui大值

? 矩阵的几种基本变换操作
1) 通过在矩阵变量后加’的方法来表示转置运算
   » A=[10,2,12;34,2,4;98,34,6];
   » A'
2) 矩阵求逆 inv(A): 返回矩阵a的逆阵。
   » A=[1 2 3; 4 5 6; 7 8 9];
   » inv(A)
3) 矩阵求伪逆pinv(A):
   » A=[1 2 3; 4 5 6; 7 8 0; 2 5 8];          %3个未知量的4个方程
   » pinv(A)
4)  矩阵翻转:
   左右反转:矩阵关于垂直轴沿左右方向进行列维翻转
        fliplr(A)
      » A=[1 4; 2 5; 3 6];
      » fliplr(A)
   上下反转:矩阵关于水平轴沿上下左右方向进行列维翻转
        flipud(A)
      » A=[1 4; 2 5; 3 6];
      » flipud(A)
5) 旋转90度
   rot90(A)
   例: » A=[1 4; 2 5; 3 6];
        » rot90(A)
6) 矩阵的特征值
   [U,V]=eig(A):  返回方阵A所有特征值组成的矩阵U和特征向量组成的矩阵V
   例: » A=[6 12 19; -9 –20 –33; 4 9 15];
        » [U,V]=eig(A)
7) 取出上三角和下三角
    triu(A) : 取上三角阵
    tril(A) :取下三角阵
    [L,U]=lu(A):作LU分解(Gauss消去法),L为主对角线元素都为1的上三角矩阵,U为一个下三角矩阵
例:» A=[1 5 2; 3 4 6; 5 3 2];
    » triu(A)
    » tril(A)
    » [L,U]=lu(A)
8) 正交分解:QR分解,Q为正交矩阵,R为上三角矩阵
   [Q,R]=qr(A)
例: » A=[1 2; 5 7; 7 3; 9 1];
    » [Q,R]=qr(A)
9) 奇异值分解: [U,S,V]=svd(A),矩阵U和V是正交矩阵,S为A的奇异值矩阵。
   例: » A=[9 4; 6 8; 2 7];
        » [U,S,V]=svd(A)
10) 求矩阵的范数
     norm(A,1)      计算矩阵A的1范数
     norm(A,2)    计算矩阵A的2范数
     norm(A,inf)   计算矩阵A的无穷范数
例:» A=rand(3);
    » norm(A,1)
    » norm(A,2)
    » norm(A,inf)
11) 求矩阵的行列式的值 det(A)
例:  » A=[1 2 3; 4 5 6; 7 8 9]
      » det(A)


3.4 基本二维绘图命令

    MATLAB不但擅长于矩阵相关的数值运算,也适合用在各种科学可视化(Scientific visualization)。下面介绍MATLAB基本二维和三维的各项绘图命令,包含一维曲线及二维曲面的绘制、打印及保存。

? plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x及y坐标。下例可画出一条正弦曲线:
    » x=linspace(0, 2*pi, 100);            % 100个点的x坐标
    » y=sin(x);                         % 对应的y坐标
    » plot(x,y);

? 若要画出多条曲线,只需将坐标对依次放入plot函数即可:
    » plot(x, sin(x), x, cos(x));

? 若要改变颜色,在坐标对后面加上相关字符串即可:
    » plot(x, sin(x), 'c', x, cos(x), 'g');

? 若要同时改变颜色及线型(Line style),也是在坐标对后面加上相关字符串即可:
    » plot(x, sin(x), 'co', x, cos(x), 'g*');

                     plot绘图函数的参数
字符 颜色 字符 图线型态
 黄色 . 点
k 黑色 o 圆
w 白色 x x
b 蓝色 + +
g 绿色 * *
r 红色 - 实线
c 亮青色 : 点线
m 锰紫色 -. 点虚线
  -- 虚线

? 图形完成后,我们可用axis([xmin,xmax,ymin,ymax])函数来调整坐标轴的范围:
    » axis([0, 6, -1.2, 1.2]);

? MATLAB也可对图形加上各种注解与处理:
    » xlabel('Input Value');                    % x轴注解
    » ylabel('Function Value');                 % y轴注解
    » title('Two Trigonometric Functions');       % 图形标题
    » legend('y = sin(x)','y = cos(x)');            % 图形注解
    » grid on;                              % 显示格线

? 用subplot来同时画出数个小图形于同一个窗口之中:
    » subplot(2,2,1); plot(x, sin(x));   %把窗口分成2*2个子窗口,在*个子窗口绘图
    » subplot(2,2,2); plot(x, cos(x));   %在第二个子窗口绘图
    » subplot(2,2,3); plot(x, sinh(x));   %在第三个子窗口绘图
    » subplot(2,2,4); plot(x, cosh(x));   %在第四个子窗口绘图

? MATLAB还有其他各种二维绘图函数,以适合不同的应用,详见下表。
Bar 长条图
Errorbar 图形加上误差范围
Fplot 较的函数图形
Polar 极坐标图
Hist 累计图
Rose 极坐标累计图
Stairs 阶梯图
Stem 针状图
Fill 实心图
Feather 羽毛图
Compass 罗盘图
Quiver 向量场图
以下我们针对每个函数举例。
? 当数据点数量不多时,条形图是很适合的表示方式:
    » close all;        % 关闭所有的图形窗口
    » x=1:10;
    » y=rand(size(x));
    » bar(x,y);

? 如果已知数据的误差量,就可用errorbar来表示。下例以单位标准差来做数据的误差量:
    » x = linspace(0,2*pi,30);
    » y = sin(x);
    » e = std(y)*ones(size(x));
    » errorbar(x,y,e)

? 对于变化剧烈的函数,可用fplot来进行较的绘图,会对剧烈变化处进行较密集的取样,如下例:
    » fplot('sin(1/x)', [0.02 0.2]);            % [0.02 0.2]是绘图范围

? 若要产生极坐标图形,可用polar:
    » theta=linspace(0, 2*pi);
    » r=cos(4*theta);
    » polar(theta, r);

? 对于大量的数据,我们可用hist来显示数据的分布情况和统计特性。下面几个命令可用来验证randn产生的高斯随随机数分布:
    » x=randn(5000, 1);      % 产生5000个 m=0,s=1 的高斯随机数
    » hist(x,20);            % 20代表长条的个数
? rose和hist很接近,只不过是将数据大小视为角度,数据个数视为距离,并用极坐标绘制表示:
    » x=randn(1000, 1);
    » rose(x);

? stairs可画出阶梯图:
    » x=linspace(0,10,50);
    » y= sin(x).*exp(-x/3);
    » stairs(x,y);

? stems可产生针状图,常被用来绘制数位讯号:
    » x=linspace(0,10,50);
    » y=sin(x).*exp(-x/3);
    » stems(x,y);

? fill将数据点视为多边行顶点,并将此多边行涂上颜色:
    » x=linspace(0,10,50);
    » y=sin(x).*exp(-x/3);
    » fill(x,y,'b');                    % 'b'为蓝色

? feather将每一个数据点视复数,并以箭号画出:
    » theta=linspace(0, 2*pi, 20);
    » z = cos(theta)+i*sin(theta);
    » feather(z);

? compass和feather很接近,只是每个箭号的起点都在圆点:
    » theta=linspace(0, 2*pi, 20);
    » z = cos(theta)+i*sin(theta);
    » compass(z);
 

  • 凡本网注明"来源:智慧城市网的所有作品,版权均属于智慧城市网,转载请必须注明化工机械,https://www.afzhan.com。违反者本网将追究相关法律责任。
  • 本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

热门频道