MATLAB视频学习笔记(2)

  • 前言
  • 1. Matlab的数据形式
  • 2. MATLAB中对于矩阵的简单操作
  • 3. MATLAB中的矩阵处理基础
  • 4. MATLAB中的程序控制结构
  • 总结



==每一小步的坚持都是有意义的!==

前言

既然选择远方,便只顾风雨兼程
  



1. Matlab的数据形式

 各种数据类型,均以矩阵的形式存在。
1.1矩阵的建立
 (1)直接输入法
   1)直接在命令窗口中输入矩阵元素;
   2)按行输入矩阵元素,同一行元素使用空格或者逗号隔开,不同行元素使用分号或者回车作为间隔。
 (2)使用M文件建立矩阵
   1)启动编辑器(输入edit命令)
   2)输入待建立矩阵
1.2结构体建立:结构体.成员名=表达式
 建立结构体a,成员包括三个分别为x1,x2,x3
   1)a.x1=1;
   2)a.x2=‘str’;
   3)a.x3=[11 12 13];
1.3结构体操作
   1)isstruct函数:判断是不是结构体;
   2)fieldnames函数:查看结构体包含所有的成员名;
   3)isfield函数:判断是不是结构体的存在;
   4)refield函数:删除某个结构体成员;
   5)getfield函数:得到结构体的成员(getfield(d,‘x4’))。
1.4单元建立:使用{ }括起建立
   1)a={1,‘str’,[8 9 10 11 12]};
 (1)直接输入法
   1)直接在命令窗口中输入矩阵元素;
   2)按行输入矩阵元素,同一行元素使用空格或者逗号隔开,不同行元素使用分号或者回车作为间隔。
 (2)使用M文件建立矩阵
   1)启动编辑器(输入edit命令);
   2)输入待建立矩阵。
 (3)特殊矩阵建立
   1)零矩阵:zeros:zeros(10);
   2)幺矩阵:ones。
 (4)冒号表达式建立向量
   1)冒号是一个重要的运算符;
   2)e1:e2:e3(1:2:5);
   3)e1为初始值,e2为步长,e3为终止值,产生行向量。以e1为开始,e3为结束,步长为e2。
 (5)建立行向量
   1)linspace(a,b,n);
   2)a和b分别为行向量的第一个和最后一个元素,n为总元素,自动产生100个元素的行向量。

2. MATLAB中对于矩阵的简单操作

2.1.索引矩阵
   (1)可以使用矩阵元素的行标和列标或者矩阵元素的位置索引来索引矩阵元素:A(2,3);A(5);
   (2)使用序号索引,涉及到MATLAB中矩阵的存储方式:[M,N]=find(A8),查找元素的行、列   标;ind=find(A8)查找元素序号;
   (3)序号和行、列标之间的转换;sub2ind(size(E),M,N),[M,N]=ind2sub(size(E),5);
   (4)行标和列标共同使用的形式。
2.2重排矩阵:将m×n的矩阵重排为w×z的矩阵
   (1)H=reshape(E,9,1)重新将E排为9行1列的矩阵;
   注意:转换前后矩阵元素数量要匹配。
2.3矩阵转置
   (1)加个单撇号对矩阵进行转置:L=K’。
2.4矩阵拆分
   (1)对矩阵进行某行或者某个元素进行拆分,格式为M=A(1,X:X)代表把第一行的第几个元素到第几个元素进行拆分。
2.5删除矩阵元素
   (1)把矩阵中的某个元素进行删除,格式为M(2)=[ ],代表把矩阵M中的第二个元素删除;A(1, : )=[];删除第一行元素。
2.6其它操作
   (1)扩展:Q=repmat(A,2,1)相当于把矩阵进行复制,复制为两行一列的矩阵样式;
   (2)压缩:找到相同的元素进行压缩:R=[1 2 2 3 3 3 4 4 4 4],对R进行压缩S=unique®,压缩后R为[1 2 3 4]。

3. MATLAB中的矩阵处理基础

3.1特殊矩阵的建立
   (1)零矩阵:zeros
   (2)幺矩阵:ones
   (3)单位矩阵:eye (I=eye(10);)
   (4)随机矩阵:rand(0-1);randn(产生正态分布的随机数)
   (5)魔方矩阵:magic
   (6)Hilbert矩阵:hilb
   (7)Toe plitz矩阵
3.2矩阵的向量计算
   (1)Matlab的运算以矩阵为单位,可以直接实现矩阵的加法、数乘计算以及矩阵的行列式、矩阵的秩、矩阵的逆以及转置等运算。
     1)计算方阵A的行列式:使用det函数;
     2)如果A的行列式不为0,那么计算A的逆使用inv函数。
   (2)向量可以看作1×n矩阵或者n×1矩阵:因此向量的加法和数乘计算和矩阵是一样的。
   (3)计算向量a和b的内积,使用内积定义式。
3.3线性方程组求解:可以使用矩阵求逆的方法求解线性方程组,和一般线性代数中的解决方法类似。
3.4矩阵的相似化简和分解
   (1)求解Jordan标准型:使用jordan函数;
   (2)求解矩阵的特征值:使用eig函数;
   (3)向量和矩阵的范数:范数计算,包括1范数、2范数和无穷范数和f范数:使用norm函数。
3.5矩阵分析
   (1)函数矩阵
     1)计算函数矩阵A(x)的一阶和二阶导数;
     2)Matlab中函数的计算:syms x:设置一个x;diff(A):对矩阵进行求导。
   (2)矩阵函数

4. MATLAB中的程序控制结构

 在Matlab中的程序控制结构分为:M文件、顺序结构、选择结构、循环结构。
4.1M文件:分为命令文件(脚本文件)和函数文件
   两种函数之间的区别:命令文件没有输入,没有返回;命令文件可以工作空间的变量操作,结果返回工作空间,而函数文件中的变量为局部变量,函数执行完毕,变量被清除,命令文件可以直接运行,函数文件需要调用的形式运行(除了特殊的函数文件之外)。
4.2程序控制结构-----顺序(按照代码顺序执行,即顺序结构,受控于代码前后位置);使用于顺序结构中的输入与输出(命令交互)。
   1)数据输入:input函数(使用后可以输入一个变量)
   2)数据显示:disp函数(可以显示变量值)
   3) 程序暂停:pause函数(可以使程序暂停一段时间)
4.3程序控制结构-----分支(又为选择结构,包括if分支,switch分支和try分支)
   1)if分支语句:单分支if语句

if条件
	 语句组
end

     双分支语句

if条件
	 语句组1
else
	 语句组2
end

     多分支语句

if条件
		语句组1
elseif
		语句组2
elseif
		语句组3
else
		语句组n
end

     Switch语句

switch表达式
		 case 表达式1
					语句组1
		 case 表达式2
					语句组2
		 case 表达式m
					语句组m
		 otherwise
					语句组n	 
		end

     try分支

try 语句组1
catch 语句组2
end

4.4程序控制结构-----循环:按照给定条件,重复执行某些语句,包括for循环和while循环。
   1)for循环:

for循环变量=表达式1:表达式2:表达式3
   循环体
end

    注意:循环变量自动增加,在循环体内对循环变量的赋值操作会带来不可预料的程序执行。

A=1:100;(A从1到100个元素)
sumA=0;
for k=1:100;循环次数
	sumA=sumA+A(k);每次加上A的元素
end

   2)while循环

while 1
		C=input('input a character','s')
		if abs(c)==13
			break;
		end
end

 注意:(1)有些可以通过MATLAB的矢量化语言,通过矩阵或者向量操作完成;
     (2)预分配的使用,可以大大增加循环效率;
     (3)有些可以通过MATLAB提供的一些特殊操作工具箱函数完成。
4.5函数文件
   1)function[输出形参]=函数名([输入形参]);
   2)注释说明;
   3)函数体。
 注:关于注释部分可提供help及lookfor命令的查找功能。

function re=add_my(a,b)
%ADD_MY 完成向量a与b的相加
%输入 :a加数1
%      b加数2
%输出:re为输入两个参数的加和
re=a+b;

 注:Ctrl+R(加注释);Ctrl+T(解除注释)
4.6函数参数可调标识变量:nargin、narout、varargin、varargout
 注:函数参数可以完成传递函数的可调功能,前两者为输入、输出参数个数,后两个可以代表未知的输入输出变量。

function re=add_multi(a,b,c,d)
%使用输入函数判断
if nargin == 4
    re==a+b+c+d;
elseif nargin == 3
	re==a+b+c;
elseif nargin == 2
	re=a+b;
else 
	error('wrong');
end
function re=add_var(a,b,varargin)
%
%
if nargin==2
	re=a+b;
else if nargin==3
	c=vargin{1}%这里要用大括号
	re=a+b+c;
else 
	error('wrong')
end

4.7全局变量:使用global声明,可以提供不同的M文件。
   1)访问同一个变量;
   2)不同的函数之间访问同一个变量,可以通过返回参数来设置,或者使用全局变量,在GUI中也可以通过其它方式完成(GUI数据、app数据)。
4.8程序调试
   1)断点和单步;
   2)根据错误提示,初步确定错误内容。



总结


通过这一段对Matlab的学习,发现这是一个很好的数学建模软件,编程语言相对与c语言比较友好,前期对于编译环境一定要处理好,把用户目录和工作目录要设置好。