Matlab学习笔记

程 序 命 令 后 面 输 入 与 不 输 入 “ ; ” 的 区 别 是 , 当 输 入 半 角 的 分 号 时 , 命 令 中 的 变 量 会 自 动 列 表 储 存 在 w o r k s p a c e 中 , 变 量 的 值 不 会 在 w i n d o w c o m m a n d 中 显 示 出 来 ; 当 不 输 入 半 角 的 分 号 时 , 变 量 不 仅 也 会 自 动 储 存 在 w o r k s p a c e 中 , 还 会 在 w i n d o w c o m m a n d 窗 口 中 显 示 出 变 量 的 值 。 程序命令后面输入与不输入“;”的区别是,当输入半角的分号时,命令中的变量会自动列表储存在\\ workspace中,变量的值不会在window command中显示出来;当不输入半角的分号时,变量不仅也\\会自动储存在workspace中,还会在window command窗口中显示出变量的值。 ;workspacewindowcommandworkspacewindowcommand

s y m s 是 定 义 符 号 变 量 s y m 是 将 字 符 或 者 数 字 转 换 为 字 符 如 果 定 义 变 量 x , s y m s   x ; 当 用 s y m 生 成 多 个 符 号 变 量 时 , M A T L A B 要 报 错 s y m s 可 以 直 接 声 明 符 号 函 数 d ( r ) , 并 且 可 以 对 函 数 的 形 式 进 行 赋 值 改 变 , 但 是 s y m 却 不 可 以 s y m   d ( t ) , 只 是 将 d ( t ) 生 成 了 一 个 整 体 的 符 号 。 syms是定义符号变量\\ sym是将字符或者数字转换为字符\\ 如果定义变量x,syms\ x;当用sym生成多个符号变量时,MATLAB要报错\\ syms可以直接声明符号函数d(r),并且可以对函数的形式进行赋值改变,但是sym却不可以sym\ d(t),\\只是将d(t)生成了一个整体的符号。 symssymxsyms xsym,MATLABsymsd(r)symsym d(t)d(t)

运算符号\/.
说明左除右除转置群运算

数据类型

int8	uint8	int16	uint16	int32	uint32	int64	uint64	%整型
floor(x)	ceil(x)	round(x)	fix(x)	%取整函数
real(z)	imag(z)	abs(z)	%实部	虚部	模
angle(z)	conj(z)	complex(a,b)	%辐角	共轭复数	创建复数
format short	%输出格式短,小数点后四位
format long	%输出格式长,小数点后14位到15

矩阵

矩阵索引
表达式功能
A(1)A重组为一维数组,返回第一个元素
A(:,j)返回A中j列向量
A(i,:)返回A中i行向量
A(i:k,j:l)返回A中i行到k行向量与j列到l列向量组成的子矩阵
A( : )将A中每列合并成一个长的列向量
help inv	%显示帮助信息
A = eye(4);	%4阶单位矩阵
A = zeros(3,2);	%3*2阶零矩阵
A = zeros(3);	%3阶零方阵
A = ones(2,4);	%2*4阶全为1方阵
A = rand(m,n);	%m*n从01均匀分布随机数矩阵
A = randn(m,n);	%m*n元素均为零均值,单位方差的正态分布随机
A(:,i) = b	%向量b赋值给A的第i列
A(1,:)=[]	%空行赋给第一行,即删除第一行
B = A(:1,5)	%取矩阵第1列至第5A(i,j)	%引用矩阵A中i行j列的元素
[m,n] = size(A)	%m,n分别存放A的行数与列数
[A,eye(5)]	%创建5*10矩阵,5列为矩阵A,5列为单位矩阵
inv(A)	%矩阵A的逆
round(A)	%所有元素四舍五入
x = magic(3)	%每一行每一列元素之和相同
ans =   8 1 6
	3 5 7
	4 9 2
---
y = sin(x)
y = cos(x)
y = sinh(x)
y = cosh(x)
y = asin(x)
y = acos(x)
y = asinh(x)
y = acosh(x)
y = tan(x)
y = tanh(x)
y = atan(x)
y = atanh(x)
---
A‘	%转置
d = det(A)	%行列式
r = rank(A)	%秩
R = rref(A)	%最简形
rrefmoive(A)	%给出化简每一步过程
---
clear all;
A = [1 3 0;3 1 0;9 2 4]
B = sort(A);	%列升序排列
C = sort(A,2)	%行升序排列
D = sort(A,'descend');	%列降序排列
E = sort(A,2,'descend');	%行降序排列
BCDE = [B C;D E]
---
clear all;
A = [1 3 0;3 1 0;9 2 4]
B = sum(A)	%按列求和,得列向量
C = sum(A, 2)	%按行求和,得行向量
D = cumsum(A)	%列累和,返回矩阵
E = cumsum(A)	%行累和
F = sum(sum(A))	%所有元素和
---
clear all;
A = magic(3)
B = prod(A)	%各列元素积
C = prod(A,2)	%各行元素积
D = cumprod(A)	%列累积
E = cumprod(A,2)	%行累积
---
clear all;
A = magic(3)
B = diff(A)	%各列差分
C = diff(A,2)	%各列2阶差分
D = diff(A,11)	%各列差分
E = diff(A,12)	%各行差分

复数
a = 2.7;
b = 13/25;
c = [1,3 * a + i * b,b * sqrt(a);sin(pi / 6),3 * a + b,3]
---
A = [1 2 3;4 5 6];
B = [11 12 13;14 15 16];
C = A + i * B

符号运算
变量代换
syms a b c d k n x y w t;
f = a * x^n + b * y + k
f1 = subs(f,[a,b],[sin(t) log(w)])
f2 = subs(f,[a,b,k],[sin(t) log(w) c * exp(-d * t)])	%a = sint,b = lnw, k = ce^(-dt)
f3 = subs(f,[n,k],[5 pi])	%n = 5, k = pi
f4 = subs(f1,k,1:4)	%k = 1 : 4

数值转化
syms c1 c2 c3;
c1 = sym('sqrt(2) * log(7)');
c2 = sym('pi * sin(pi / 5) * exp(1.3)')
c3 = sym('exp(pi * sqrt(8))')
ans1 = double(c1)
ans2 = double(c2)
ans3 = double(c3)
class(ans1)
class(ans2)
class(ans3)
---
c = sym('exp(pi * sqrt(79))');
c1 = double(c)
ans1 = class(c1)
c2 = vpa(c1, 8)	%vpa(E,D)
ans2 = class(c2)
digits 18	%设置精度
c3 = vpa(c1)	%vpa(E)精确计算表达式值,必须与digits(D)连用
ans3 = class(c3)

表达式化简
syms x
f = x ^ 3 + x ^ 2 - x - 1;
f1 = factor(f)	%因式分解
---
syms x y;
f = (x + y)^3;
expand(f)	%展开
---
syms a b c x;
f = -a * x * exp(-c * x) + b * exp(-c * x);
f1 = collect(f, exp(-c * x))	%合并同类项
---
syms x y;
e1 = log(x) + log(y);
[R1,HOW1] = simple(e1)
e2 = 2 * cos(x)^2 - sin(x)^2;
[R2,HOW2] = simple(e2)
e3 = cos(x) + j * sin(x);
[R3,HOW3] = simple(e3)
e4 = x^3 + 3 * x^2 + 3 * x + 1;
[R4,HOW4] = simple(e4)
e5 = cos(x)^2 - sin(x)^2;
[R5,HOW5] = simple(e5) %化简并返回简化方法 
---
syms k p x y;
f = x/(k * y) + y/(p * x);
[n,d] = numden(f)
f1 = n / d
numden(f)	%通分
---
syms a b c d x;
f = -a * x^4 + b * x ^ 3 - c * x^2 + x + d;
f1 = honor(f)	%嵌套型

其他函数
syms a b c x y;
c = 123456;
ans1 = class(c)
c1 = char(sym(c))	%char将数值对象,符号对象转换为字符对象
ans2 = class(c1)
f = sym('x + y + z');
ans3 = class(f)
f1 = char(f)
ans4 = class(f1)	%char
---
syms a b c d x y;
f = a * x / b + c / (d * y);
f1 = sqrt(b^2 - 4 * a * c);
pretty(f)	%以习惯“书写”方式显示
pretty(f1)
---
clear	%清除工作区
复合函数与反函数


微积分

导数

∂ x i ∂ x j = − ∂ ∂ x j f ( x 1 , x 2 , ⋯   , x n ) ∂ ∂ x i f ( x 1 , x 2 , ⋯   , x n ) \frac{\partial x_i}{\partial x_j}=-\frac{\frac{\partial}{\partial x_j}f\left(x_1,x_2,\cdots,x_n\right)}{\frac{\partial}{\partial x_i}f\left(x_1,x_2,\cdots,x_n\right)} xjxi=xif(x1,x2,,xn)xjf(x1,x2,,xn)

syms x
y = -x*sin(x)
diff(y,x,2)
diff(y,x,3)

%偏导数
syms a x y z;
f = x ^ 2 - y ^ 2 + 2 * z ^ 2 = a ^ 2;
zx = -diff(f,x)/diff(f,z)
zy = -diff(f,y)/diff(f,z)
---
syms x y;
f = (x ^ 2 + 2 * x) * exp(x ^ 2 + y ^ 2 + 2 * x * y);
diff(f,x)/diff(f,y)

绘图

简单示例

y = x + sin ⁡ x + e x , x ∈ [ − π 2 , π 2 ] y = x + \sin x +e^x, x\in\left[-\frac{\pi}{2},\frac{\pi}{2}\right] y=x+sinx+ex,x[2π,2π]

x = -pi/2:0.01:pi/2;
y = x + sin(x) + exp(x);
plot(x,y)
plot(x,y,'-ro')
grid on	%网格
title('示例');
xlabel('x');
ylabel('y');
legend('y = x + sinx + e^{x}');

ezplot
ezplot(f)	%MATLAB默认范围(-2pi, 2pi)
ezplot('sin(x)^2+4*cos(y)^2=4',[-5 5 -1 1]);	%ezplot(f,[xmin, xmax, ymin, ymax])
axis square

二元函数
%ezmesh
syms x,y;
f = 'sqrt(1 - x^2 - y)';
ezmesh(f)
---
%meshgrid
x = 0:0.1:2;
y = -2:0.1:2;
[X,Y] = meshgrid(x,y);
Z = X.^3 + Y.^3;
surf(X,Y,Z);xlabel('x'),ylabel('y'),zlabel('z');
title('z = x^3 + y^3')
---
%循环语句获得矩阵数据
clear all
clc
x = 0:0.1:2;
y = -2:0.1:2;
z1 = y.^3;
z2 = x.^3;
nz1 = length(z1);
nz2 = length(z2);
Z = zeros(nz1,nz2);
for r = 1:nz1
    for c = 1:nz2
        Z(r,c) = z1(r) + z2(c);
    end
end
surf(x,y,Z);xlabel('x'),ylabel('y'),zlabel('z');
title('z = x^3 + y^3') 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值