Matlab入门基础

烈酒焚心 提交于 2020-11-27 06:10:46

matlab入门篇,一些基础用法记一下~

M语言是解释型语言

who:查看当前变量

whoes:查看当前变量及其维数、所占字节数等。

clear: 清除所有变量

clear + 变量名: 清除该变量

save 把当前的变量数据保存到默认命名的mat文件中(.mat文件,一种数据文件)

​ **save[**文件名][变量名][变量名][-append][-ascii]

数据类型

数值型:双精度、单精度、整型

​ a =1; 默认建立double数据类型

​ b = uint8(a); b转换为uint8;

​ a = uint8(a); a转换为uint8.

字符串

​ 字符串和字符都是使用单引号,获取ascii码值,使用double或者abs函数

​ 如double('a');

​ ascii转化为字符输出

​ char函数:char(63);输出ascii码63代表的字符。

​ 字符串去单引号

​ str2num 、num2str、eval('t=1'):将字符串当成语句执行

结构体

​ 结构体.成员名 = 表达式 // 可以一直建立... 不需要声明

​ isstruct:是否是结构体。fieldnames、isfield函数、rmfield函数、getfield函数

单元

​ 使用{}建立 : a = {1,'str',[11 12 13 14]};

多维矩阵

矩阵的建立

​ 直接输入:同行元素使用空格或者逗号隔开,不同行元素使用分号作为间隔

​ 建立0、1矩阵:zeros(row,column);同理建立ones(row,column);

​ 冒号表达式建立向量: e1:e2:e3 其中e1为初始值,e2为步长,e3为结束值

​ 类似冒号表达式:linspace(sta,end,step_length);

矩阵的简单操作

​ 索引矩阵:A(i,j) == A(i*(m-1)+j);

​ int / pair<int,int>find(A == 2) : 在矩阵A中查找值为2的元素,返回序列号或者坐标,有多个答案时候返回多个。

​ ind2sub(size(A),ind); sub2ind(sizeof(A),x,y);

​ 重排矩阵:res=reshape(A,9,1) <==> A(:);

​ 矩阵的转置:A';

​ 矩阵的拆分(索引矩阵的特例):M = A(1,:)<==>M=A(1,1:end)第一行所有列内容,又如M=A(1,1:3); 一行一至三列

​ 删除矩阵元素:A(ind) = []; A(1,:) = [];

​ 矩阵扩展(复制):M = repmat(A,2,1); (把A矩阵扩展成2行一列,其中把A整体看成一个元素)

​ 矩阵压缩(去重):A = [1 2 3 4 4 ]; S = unique(A);

矩阵处理基础

特殊矩阵的建立

单位矩阵: I = eye(m,n); 一般(m == n)(方阵嘛(^_^));

随机矩阵:rand:产生0到1的随机均匀矩阵。randn:产生0到1之间的随机数,服从正态分布

​ e.g.: Sn = rand(1,10); Sn = randn(1,10);

​ Sn = a + (b - a) * rand(row,column); a~b的随机均匀矩阵

​ y = u + sqrt(s)*randn:产生均值为u,方差为s的正态分布的随机矩阵

​ mean函数可以获得序列的均值,std可以得到序列的方差

魔方矩阵:magic(5);

Hilbert: hilb(4) (format rat) 可以以有理数形式输出 (H(i,j) = (i+j-1)/(i+j))

Toeplitz: toeplitz(1:6);

矩阵和向量运算

​ matlab以矩阵为单位,可以直接实现矩阵的加法、数乘等运算以及矩阵的行列式、矩阵的秩、矩阵的逆以及转置等运算

det(A):矩阵A的行列式 ,如果行列式不为0,则可逆。

inv(A):矩阵的逆

复数向量 : a = [1 + 5i, 2,3+6i];

向量内积:s = a*b‘.(a、b均为行向量)

线性方程组求解

​ A = [1,2,3;1,4,8;1,8,27];

​ b = [5,-2,6]’;

​ x = inv(A)*b; OR x = A/ b;

矩阵的相似化简和分解

Jordan标准型:jordan(A); [v J] = jordan(A);其中V是相似变换矩阵,J是约当标准型

矩阵特征值:eig(A); [V J] = eig(A)

矩阵和向量的范数

范数:norm(A,1):1范数,norm(A,2):2范数,norm(A,inf):无穷范数,norm(A,'fro'):f范数

矩阵分析

计算函数矩阵导数(计算函数矩阵中的每一个元素导数):diff(A):求一阶导数。diff(A,2)求二阶导数。

矩阵函数:funm(A,@exp // @sin //@ cos);

Matlab程序控制结构

M文件:Script File、Function File.

数据输入:input函数。数据显示:disp函数。程序暂停:pause函数(以秒为单位)。

分支 与循环 help for 、help switch 、help while 、help if

Matlab二维高层绘图操作

%%二维高层绘图
    %基本绘图
        x = 0:0.1:2*pi;
        y = sin(x);
         plot(x,y);
    %第二个参数为矩阵
        y1 = sin(x);
        y2 = cos(x);
        y3 = 0.002*exp(x);
        y4 = x;
        y5 = 0.002*tan(x);
        z = [y1;y2;y3;y4;y5];
       % plot(x,z);
     %两个参数都是矩阵
        x1 = 0:0.01:2*pi;
        x2 = -pi:0.01:pi;
        x = [x1;x2];    

```
    y1 = cos(x1);
    y2 = sin(x2);
    y  = [y1;y2];
    plot(x,y); % 按列绘图
    plot(x',y');
 % plot只有一个参数
    x = linspace(0,2*pi,200);
    y = sin(x);
    plot(y)
    y2 = cos(x);
    y3 = y + i*y2;
    plot(y3)
  
  % plot有多个参数
    x1 = linspace(0,2*pi,200);
    x2 = linspace(0,2*pi,100);
    y1 = cos(x1);
    y2 = sin(x2);
    plot(x1,y1,x2,y2)
    
  % plot含有的曲线选项
    x = linspace(0,2*pi,100);
    y = sin(x);
    plot(x,y,'r') %r g y m k b
    plot(x,y,'*') % * . p < > 
    plot(x,y,':') %'--' '-' '-.' ':'
    plot(x,y,'r*:')
```

 %% 图形标注
    x = linspace(0,2*pi,100);
    y = sin(x);
    plot(x,y);
    xlabel('x');
    ylabel('y');
    title('正弦');
    text(2,0.3,'y=sin(x)') 
    

```
	x1 = linspace(0,2*pi,200);
	x2 = linspace(0,2*pi,100);
	y1 = cos(x1);
	y2 = sin(x2);
	plot(x1,y1,x2,y2)
	xlabel('x');
	ylabel('y');
	title('正弦');
	text(2,0.3,'y=sin(x)^2');
	text(0.5,0.2,'y=cos(x)_2');
	legend('cos','sin');

%坐标轴控制
    xlim([0 10]) 
    % axis equal
```

%% 图像保持
    x =0:0.1:2*pi;
    y1 = sin(x);
    y2 = cos(x);
    hold on  % 图形保持
    plot(x,y1,'r');
    plot(x,y2,'g');
    hold off % 图形保持取消

%% 窗口分割
    x = 0:0.1:2*pi;
    y1 = sin(x);
    y2 = cos(x);
    y3 = tan(x);
    y4 = exp(x);
    subplot(221); % 将窗口分成2*2的小格,然后绘制第一个
    plot(x,y1);
    subplot(222);
    plot(x,y2);
    subplot(223);
    plot(x,y3);
    subplot(224);
    plot(x,y4);

Matlab符号运算

	%符号变量
		a = sym('a')
		syms b;
		b
	%符号常量
		c = sym('3');
	
	%符号表达式
		syms x
		f1 = 3*x+6
		f2 = 3*x+6
	%符号四则运算
		fadd1 = f1 + f2
		fsub1 = f1 - f2
		fmu1 = f1*f2
		fdiv = f1 / f2
	
	%符号表达式化简
		syms x y
		s = (x^2+y^2)^2+(x^2-y^2)^2;
		spy = simplify(s); 
	
	%符号表达式和数值的转换
		eval(c)
	%因式分解,展开和合并同类项
		syms a b x y
		f1 = a^3 - b^3;
		factor(f1) %因式分解
	
		f2=(3*x^2+8*y^2)*(-x^2+3*y);
		expand(f2) % 展开
	
		f3=3*x^2+4*x^2+5*x^2*y;
		collect(f3) % 合并同类型
	
	%符号矩阵
			a1 = [x x+y;y y^2] 
			transpose(a1) % 普通转置
			a1' % 共轭转置
	
		%符号函数值的求解
			syms x
			f1 = x^3-9;
			subs(f1,3)
	
		% 符号极限,符号微分,符号积分
			syms x a
			y =sin(x+a);
			limit(y,0)
			y2 = sqrt(1+exp(x));
		
		diff(y2)  % 数值中是求差分,符号计算是求解导数
		diff(y2,2) % 求二重导数
		diff(y2,3)
	
		y3 = (3-x^2)^3; % 不定积分
		int(y3)
	
	% 求定积分
		y4 = abs(1-x);
		int(y4,1,2)
	
	% 符号级数求和、泰勒级数
		syms n
		f = 1/ n^2;
		s1 = symsum(f,n,1,inf) % 无穷级数  
	
	%泰勒展开  
		syms x
		y = (1 + x + x^2) / (1 - x + x^2);
		taylor(y,x,1,'Order',3) % 在x=1处进行taylor展开并且 得到第三项的值
	
	%符号代数方程
		clear 
		syms x
		eval(solve(x+x*exp(x)-10))
	% 方程组
		clear
		syms x y
		[x y] = solve('x+y-98','x^(1/3)+y^(1/3)-2','x,y')
	
		[x y] = solve('1/x^3+1/y^3-28','1/x+1/y-4','x,y')
	
	%符号微分方程
		dsolve('Dy-(x^2+y^2)/x^2/2','y(1)=2','x')

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!