matlab

Posted 2018-1025

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab相关的知识,希望对你有一定的参考价值。

;结尾,不显示结果,否则立刻显示

数据结构

变量命名规则    字母(区分大小写)开头,后面跟其他字符

数值型数据

双精度数值变量  double

单精度  single

uint8()  图像表示与处理

符号型

sym(a)    将a转化为符号型

变量声明    syms

显示符号变量的精度    vpa(a)

显示符号变量属性    assumptions()

设置符号变量类型    assume();assumeALso()

>> a=sym(123456789012345678901234567890)
 
a =
 
123456789012345677877719597056
 
>> a=sym(‘123456789012345678901234567890‘)
 
a =
 
123456789012345678901234567890
   

其他数据结构

字符串  用单引号括起来

多维数组  

单元数组    用{}表示

表格数据结构

类与对象

矩阵与向量

存储矩阵

a=[1,2,3;4,5,6;7,8,9]

a =

     1     2     3
     4     5     6
     7     8     9

  先加行,再加列

a=[[a;[1,2,3]],[1;2;3;4]]

a =

     1     2     3     1
     4     5     6     2
     7     8     9     3
     1     2     3     4

  复数矩阵

>> b=[1+9i,2+8i,3+7i;4+6i,5+5i,6+4i;7+3i,8+2i,9+1i]

b =

   1.0000 + 9.0000i   2.0000 + 8.0000i   3.0000 + 7.0000i
   4.0000 + 6.0000i   5.0000 + 5.0000i   6.0000 + 4.0000i
   7.0000 + 3.0000i   8.0000 + 2.0000i   9.0000 + 1.0000i

求逆矩阵

c=inv(b)

定义行向量

d=1:0.5:10
%从1到10,步长0.5

d =

  1 至 11 列

    1.0000    1.5000    2.0000    2.5000    3.0000    3.5000    4.0000    4.5000    5.0000    5.5000    6.0000

  12 至 19 列

    6.5000    7.0000    7.5000    8.0000    8.5000    9.0000    9.5000   10.0000

等间距

vla=linspace(0,pi,20)
%20等分

vla =

  1 至 11 列

         0    0.1653    0.3307    0.4960    0.6614    0.8267    0.9921    1.1574    1.3228    1.4881    1.6535

  12 至 20 列

    1.8188    1.9842    2.1495    2.3149    2.4802    2.6456    2.8109    2.9762    3.1416
子矩阵提取
e=a(v1,v2)
vi表示子矩阵要保留的行号
v2表示子矩阵要保留的列号
:,表示所有行或列
end表示最后
e=a(1:2:end,:)
%提取a矩阵的1到最后一行,步距为2,所有列
e =

     1     2     3     1
     7     8     9     3

  

 f=a([1,1,1,1],:)
%第一行重复4遍,所有列
f =

     1     2     3     1
     1     2     3     1
     1     2     3     1
     1     2     3     1

矩阵的代数运算

矩阵转置

共轭转置

>> c=a‘

c =

     1     4     7
     2     5     8
     3     6     0

  正常转置

>> d=a.‘

d =

     1     4     7
     2     5     8
     3     6     0

  矩阵加减法

c=a+b

c=a-b

矩阵乘法

c=a*b

矩阵除法  

左除  ax=b,求x

x=a

右除  xa=b,求x

x=b/a

矩阵左右翻转  b=fliplr(a)

矩阵上下翻转       b=flipud(a)

旋转90°  b=rot90(a)

旋转180°  b=rot90(a,k)  k=1,2,3,4

矩阵的乘方  f=a^x

>> z=[2,2;2,2]

z =

     2     2
     2     2

>> z^2

ans =

     8     8
     8     8

  点运算

>> a=[1,2,3;4,5,6;7,8,0];
>> b=a.^a

b =

           1           4          27
         256        3125       46656
      823543    16777216           1

  矩阵的其他运算

与运算

>> 1&1

ans =

  logical

   1

  或运算

>> 1|0

ans =

  logical

   1

  非运算

>> ~1

ans =

  logical

   0

  异或运算

>> xor(1,1)

ans =

  logical

   0

  比较运算

>,>=,<,<=,==,~=,find(),any()

>> a

a =

     1     2     3
     4     5     6
     7     8     0

>> i=find(a>5)‘
%找出>5的数,单下标从列数
i =

     3     6     8

  双下标

>> [i,j]=find(a>5)

i =

     3
     3
     2


j =

     1
     2
     3

  

>> a1=all(a>5)
%判断每一列是否大于5,是返回1
a1 =

  1×3 logical 数组

   0   0   0

  

>> a2=any(a>5)
%判断每一列是否存在>5的数
a2 =

  1×3 logical 数组

   1   1   1

  解析结果的化简与变换

simplify()  公式化简

numden()  提取分子与分母

collect()  合并同类项处理

expand()    展开处理

factor()  因式分解

例子

P(s)=(s+2)2(s2+3s+2)(s3+12s2+48s+64)

输入

>> syms s;
%声明变量 >> p=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64) p = (s + 3)^2*(s^2 + 3*s + 2)*(s^3 + 12*s^2 + 48*s + 64)

  化简

>> p1=simplify(p)
 
p1 =
 
(s + 3)^2*(s + 4)^3*(s^2 + 3*s + 2)

  因式分解与展开

>> p3=factor(p),p4=prod(p3)
 
p3 =
 
[ s + 3, s + 3, s + 2, s + 1, s + 4, s + 4, s + 4]
 
 
p4 =
 
(s + 1)*(s + 2)*(s + 3)^2*(s + 4)^3

  变量替换

f1=subs(f,x1,x1*)      x1替换为x1*,f表示函数

希尔伯特矩阵

Hilb()

求100以内质数

>>  a=1:100;b=a(isprime(a))

b =

  1 至 17 列

     2     3     5     7    11    13    17    19    23    29    31    37    41    43    47    53    59

  18 至 25 列

    61    67    71    73    79    83    89    97

  全排列计算

5个人照相有多少方法

>> p=perms(1:5),size(p)

  5个人记作a,b,c,d,e

>> p=perms(‘abcde‘),size(p)
%size()提取矩阵的行和列

流程结构

for循环

例子:1到100求和

>> s1=0;for i=1:100,s1=s1+i;end,s1

s1 =

        5050

while结构

>>  s2=0;i=1;
>> while (i<=100),s2=s2+i;i=i+1;end
>> s2

s2 =

        5050

  系统统计程序运行时间

tic与toc

条件转移结构

>>  a=1;b=2;
>> if(a>b) c=a-b;elseif(a<b) c=b-a;else c=0;end;c

c =

     1

开关结构(switch)

试探结构

函数编写

脚本(只能解决一个问题)

1.edit命令打开文件编辑器编辑

2.保存后打文件名调用。

函数(可以重复使用)

脚本内容

function [m,s]=findsum(k)
s=0;m=0;
while(s<=k),m=m+1;s=s+m;end

  调用

>> [m,s]=findsum(12345)

m =

   157


s =

       12403

nargin    可以检测输入个数

递归

conv()可以计算两个多项式的积

伪代码语句

pcode mytest

绘制二维曲线

已知数据绘图

>> t=[1,2,3,4,5,6];
>> y=[6,5,4,3,2,1];plot(t,y)

已知函数绘图

例子  y=sin(x)  xε[-pi,pi]

>> x=[-pi:0.05:pi];y=sin(x);plot(x,y)

  法二

>> syms x;y=sin(x);fplot(y,[-pi,pi])  
分段函数
多纵轴曲线绘制
plotyyy()  plot4y()  plotxx()
>> x=0:0.01:2*pi;
>> y1=sin(x); y2 = 0.01*cos(x);
>> plotyy(x,y1,x,y2)

 特殊二维图形

绘制极坐标 

Ρ=5sin(4θ/3)

>> theta=0:0.01:6*pi;rho=5*sin(4*theta/3);
>> polarplot(theta,rho)

  同一个窗口画多个图形

>> t=0:0.2:2*pi;y=sin(t);
figure(gcf),clf,subplot(2,2,1),stairs(t,y)
subplot(2,2,2),stem(t,y)
subplot(2,2,3),bar(t,y)
subplot(2,2,4),semilogx(t,y)
绘制隐函数  
fimplicit()
例子  x

2

sin(x+y

2

)+y

2

e

x+y

+5cos(x

2

+y)=0
>> syms x y;
h=fimplicit(x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y));
%返回句柄h,默认区间是【-5,5】
set(h,‘color‘,‘b‘)
%设置曲线

设置为【-10,10】

syms x y;
h=fimplicit(x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y),[-10,10]);
set(h,‘color‘,‘b‘)

excel文件读取

例子  读取B5到C67数据

>> X=xlsread(‘文件名‘,‘B5:C67‘);
%X为一个两列矩阵
t=X(:,1);p=X(:,2);
%将两列分别赋值
plot(t,p)

三维图行绘制

绘制三维曲线

例子 x=t,y=2t,z=3t

>> t=0:0.1:10;
x=t; y=t.^2; z =t.^3;
 plot3(x,y,z);
grid
%网格状

动态绘制三维线

>> t=0:0.1:10;
x=t; y=t.^2; z =t.^3;
 comet3(x,y,z)

绘制三维曲面

例子  z=x2+y2

>> [x,y]=meshgrid(0:0.1:5,0:0.1:5);
z=x^2+y^2;
mesh(x,y,z)

绘制三视图

俯视  view(0,90);右视  view(90,0);主视  view(0,0)

面向对象程序设计

图形用户界面

1,打开  guide

2,双击对象得到对象属性编辑

 












以上是关于matlab的主要内容,如果未能解决你的问题,请参考以下文章

在 MATLAB 中将频谱图另存为图像

VBS 环境下如何调用EXCEL内置函数

matlab中的FFT,出乎意料的结果

Python - 循环加速 - 大型数据集

微信小程序代码片段

VSCode自定义代码片段——CSS选择器