;结尾,不显示结果,否则立刻显示
数据结构
变量命名规则 字母(区分大小写)开头,后面跟其他字符
数值型数据
双精度数值变量 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,双击对象得到对象属性编辑