c语言fmin最小公倍数,matlab小函数

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

(记得按字母序索引)

矩阵向量化操作

A(:)

拉成一个向量 ($a_{11},a_{21},…$),注意先列后行

repmat用途:创建由小型矩阵重复组合成的矩阵,比如各行向量相同的矩阵

例子1A = repmat(1:5, 5, 1)运行结果:

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

find用途:把满足find条件的下标揪出来. 当返回值只有一个时返回全下标,两个时则返回下标对 .

注意这里的全下标是指先数列再数行,如在3*3矩阵中,$a_{13}$的全下标为3,$a_{31}$的全下标为7.

例子1

2

3

4A = [1,-3,-4;4,3,-9];

B = find(A > 0);

C = find(mod(A, 2)==0);%揪出偶数

[r,c] = find(A > 0);

运行结果

A =

1 -3 -4

4 3 -9

B =

1

2

4

C =

2

5

r =

1

2

2

c =

1

1

2

(即(1,1),(2,1),(2,2)元素为所找元素)

reshape用途:把给定矩阵(通常是向量)按自己需要的方式(具体指行列维数)重新塑造成矩阵 .

例子1A = reshape(1:10,2,5);

运行结果:

A = 1 3 5 7 92 4 6 8 10

inv用途:矩阵求逆 .

注意:不可逆矩阵用inv时会显示inf矩阵

randn用途:生成正态分布随机矩阵

例子1A = randn(3,4);

A = 0.5377 0.8622 -0.4336 2.76941.8339 0.3188 0.3426 -1.3499

-2.2588 -1.3077 3.5784 3.0349

rand用途:生成 [0, 1] 均匀分布的矩阵

例子1A = rand(3,4);

A= 0.9572 0.1419 0.7922 0.03570.4854 0.4218 0.9595 0.8491

0.8003 0.9157 0.6557 0.9340

randi用途:rand integer,即生成指定区间的整数的均匀分布的随机矩阵

例子1A = randi([0,3], 3, 3)

A = 2 1 23 2 0

2 0 1

对矩阵元素排序1

2

3

4

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

A1 = sort(A); %列升序

A2 = sort(A,'descend') %列降序

A3 = sort(A,2) %行升序

A4 = reshape(sort(A(:)),3,3); %全部元素排序

矩阵幂运算与矩阵函数

D:Blogblogsource_posts%E5%9B%BE%E7%89%87%E7%9F%A9%E9%98%B5%E5%B9%82%E8%BF%90%E7%AE%97%E4%B8%8E%E7%9F%A9%E9%98%B5%E5%87%BD%E6%95%B0.png

胞元数组

内容援引:a{k}=5, b{k}=’r’

援引:显示胞元类型,a(k)=double, b(k)=string

符号矩阵分析

A.’(转置)与A’(共轭转置)

共轭矩阵

conj(A)

det(A)

求行列式

diag(A)当A为向量,则生成矩阵 $diag(a_1,dots a_n)$;

当A为矩阵,则提取其对角元构成向量。

expm(A)

计算A的指数矩阵(将其对角化后取指数再复原)

A的最大维度大小(若A为向量,则返回长度)

length(A)

ndims(A)

返回A的维数

A所含元素总数

numel(A)

每一维大小(行*列)

size(A)

rank(A)

计算A的秩

化为下三角矩阵

tril(A)

[V, D] = eig(A)

返回特征值,特征向量 (默认显示所有特征值和特征向量,特征值的顺序是乱的)

eigs(A)1

2

3

4

5

6

7

8rng default;

A = rand(4);

[~,D2] = eigs(A,3,'lm'); %绝对值最大的3个特征值

[~,D3] = eigs(A,3,'sm'); %绝对值最小的3个特征值

[~,D4] = eigs(A,3,'lr'); %实部最大的3个特征值

[~,D4] = eigs(A,3,'sr'); %实部最小的3个特征值

[~,D4] = eigs(A,3,'li'); %虚部最大的3个特征值

[~,D4] = eigs(A,3,'si'); %虚部最小的3个特征值

poly(A)

返回方阵 A 的特征多项式!

[V, J] = jordan(A)

返回特征值,jordan标准形(等式左边为一个返回值时,返回前面那一个,即特征值)

满足 $V^{-1}AV=J$

[U, S, V] = svd(A)

奇异值分解,$S=U^*AV$

[L, U] = lu(A)

LU分解

[Q, R] = qr(A)

QR分解

求雅可比矩阵

jacobian(f, v) 求函数(向量) f 关于变量(向量)v 的雅可比矩阵 .

注意!这里的 f, v 一般不是一个变量,而是变量向量,示例如下:1

2syms x y z

jacobian([x*y*z, y^2, x + z], [x, y, z])

稀疏矩阵

生成n阶单位稀疏矩阵

speye(n)

基于三元组表示法将大矩阵转化为稀疏矩阵

B=sparse(A)

翻转矩阵

上下翻转(以中间行为镜子,上下对应的行交换位置)

flipud(A) (即flip up down)

左右翻转(以中间列为镜子,左右对应的列交换位置)

fliplr(A) (即flip left right)

逆时针旋转 $90^o$的整数倍

rot(A, 2) 即旋转两个90°

方程(组)符号解

线性方程组可直接Ab

解线性方程组 AX=b

一般方程组:solve

solve(eqn_1,…eqn_k, x, y)

前面是符号表达式的方程(若为仅为表达式则默认等于解Eqn=0),后面是希望解出来的变量

代码示例:

解方程 $x^2+y^2=1,xy=2$1

2

3

4syms x y;%需要定义符号变量

eqn1 = x^2+y^2==1;

eqn2 = x*y==2;

[x,y] = solve(eqn1,eqn2,x,y);

两种调用方式:solve(f == 1, x)

solve(f - 1, x)

多项式求根

求 $x^3+4x+5=0$ 的根:1

2

3

4

5

6

7

8p = [1,0,4,5];

R = roots(p);

%若需要求实根

syms x real

f = x^3+4*x+5;

R1 = solve(f);

%也可以

R_real = R(imag(R==0))

绘图

逐点绘图

meshgrid用途:生成一组配对的(x, y)点,供绘图采样用. (也可以生成三维点)

相当于x轴方向划几条线,y轴方向画几条线,以交点为采样点

例子:1[X,Y] = meshgrid(1:3,10:15);

X =

1 2 3

1 2 3

1 2 3

1 2 3

1 2 3

1 2 3

Y =

10 10 10

11 11 11

12 12 12

13 13 13

14 14 14

15 15 15

plot

符号绘图

D:Blogblogsource_posts%E5%9B%BE%E7%89%87%E7%AC%A6%E5%8F%B7%E7%BB%98%E5%9B%BE.png各种例子详见第四课课件

ez 系列可以字符串绘图也可以符号表达式绘图;f 系列不支持字符串,只能符号表达式绘图。

二维平面(符号)绘图:ezplot, fplot, ezpolar

三维曲线(符号)绘图:ezplot3

空间曲面(符号)绘图:ezsurf(c), ezmesh(c), fsurf(c)。 加 ‘c’ 表示底面加等位线

fplot VS ezplot : fplot无bug;ezplot 可能有 bug。但是后者有自动title, 坐标范围会自动调整,前者默认[-5,5]。

ezplot(y)

ezplot(f(x,y), [a, b], [c, d]) %隐函数 $f(x,y)=0$

ezplot(x(t), y(t) , [a, b])

ezmesh , ezsurf, fsurf 大致相同,且都画不了隐函数

ezmesh(z(x, y), [a, b, c, d])

ezmesh(z(x, y), [a, b]) 注意是 $x,yin[a,b]$

ezmesh(x(s, t), y(s, t), z(s, t))

plot3(x(t), y(t), z(t), ‘b-‘)

数值微分

diff输入:一个 n 维列向量(即函数值的n个采样点)

输出:一个 n-1 维列向量(由于使用向前差分,所以得到的差值点的列向量中,少了最后那个点的导数)

原理:向前差分。即 diff(y) 等价于 y(2:end) - y(1:end-1)

例子1

2

3

4

5d = pi/100; %选用的步长最好整除区间长度,否则最后那个点有点尴尬

x = 0:d:pi;

y = sin(x);

dx = diff(y);

dydx = dx/d; %得到导数值列向量

gradient输入:与 diff 完全一样

输出:一个 n 维列向量(第一个点用向前差分,最后一个用向后差分,其余点用中心差分)

原理:中心差分。gradient(y) 等价于 $frac{ y(3:end) - y(1:end-2)}{2}$

例子1

2

3

4

5d = pi/100; %选用的步长最好整除区间长度,否则最后那个点有点尴尬

x = 0:d:pi;

y = sin(x);

dx = gradient(y);

dydx = dx/d; %得到导数值列向量

符号微分

diff

diff(f, v, n) 计算 f 关于 v 的n阶导数.

符号极限

limit(符号表达式,极限变量,极限值,’left’) : 左极限

数值求和

sum输入:矩阵或行(列)向量

输出:若输入为行(列)向量,则输出为向量元素之和;若输入为矩阵,则输出为各列求和得到的的行向量(sum(A, 1)),或各行求和得到的的列向量(sum(A, 2))

符号求和

symsumsymsum(符号表达式(求和通项),求和变量,下界,上界)

代码示例:

计算 $Sigma_{k=0}^{n} a^kb^{n-k}$1

2

3

4syms a b n k;

x = a^n;

y = b^n;

s = symsum(subs(x,n,k)*subs(y,n,n-k),k,0,n);%经常要结合subs使用

数值积分

常用方法及适用场景:梯形公式:

辛普森公式:

蒙特卡洛法:高维积分(概率算法,精度较低,但复杂度低)

trapz输入:trapz(y) ,y 是函数值采样点的行(列)向量;trapz(x, y),多加的 x 是对应 y 的自变量采样点的向量

输出:前者输出$Sigma[ f(x_i)+f(x_{i+1}) ]$的结果(第一个和最后一个只加了一次);后者直接输出积分结果

原理:梯形积分

代码示例:1

2

3

4d = pi/1e5;

t = 0:d:pi; %1e5+1个采样点

yt = t./sin(t).^3;

yt_int = trapz(t,y); % 或者trapz(y)*d

integral

integral (fun, xmin, xmax)1

2

3

4

5

6fx=@(x)exp(-abs(x)).*abs(sin(x));

a1=integral(f,-5.*pi,10.*pi,'RelTol',1e-6,'AbsTol',1e-9);%相对误差为默认的10^(-6)

a2=integral(f,-5.*pi,10.*pi,'RelTol',1e-8,'AbsTol',1e-9);%相对误差为10^(-8)

a3=integral(f,-5.*pi,10.*pi,'RelTol',1e-10,'AbsTol',1e-9);%相对误差为10^(-10)输入:匿名函数句柄,积分下限及上限(支持广义积分),(可选)相对误差控制,绝对误差控制

输出:数值积分值

原理:商业机密,不可见

数值微分方程(差分方程)

符号微分方程

dsolve

计算定解问题 $xy^{‘’}-3y’=x^2, y(1)=y(5)=0 .$1

2

3

4syms y(x)

eqn = diff(y,x,2)*x-3*diff(y,x)==x^2;

cond = [y(1)==0,y(5)==0];

solu = dsolve(eqn,cond)

上面的例子中,eqn 也可以是一个方程组 [eq1, eq2, …]

三大变换

傅里叶变换fourier(f(t), t, s)

ifourier(F(s), s, t)

拉普拉斯变换

用法与傅里叶变换一致

Z变换Z变换定义:$F(z)=Sigma_{n=0}^{infin}f(n)z^{-n}$

Z变换的逆变换定义:$f(z)=int_Gamma F(z)z^{n-1}dz$

意义:描述了离散序列 f(n) 的复频率域信息

用途:可以将差分方程转化为代数方程(对应于傅里叶,拉普拉斯变换将微分方程转化为代数方程)

代码示例:(Z变换求离散卷积)1

2

3

4

5

6syms a b n k w z

assume(a~=b);assumeAlso(a~=0);assumeAlso(b~=0);

%a 与 与 b 不为 0 的显示更加简练(其实 a 或 或 b 为 为 0 也应该对的,这是 MATLAB 处理不到位)

X=ztrans(a^k,k,z);

H=ztrans(b^k,k,z);

w=iztrans(H*X,z,k);

Taylor展开

taylor( f ) :返回 f 在 0 点的 5 阶麦克劳林展开。

taylor( f, x, a, ‘Order’, 10):返回 f 在 x = a 的 9 阶 Taylor 展开 。

注意!需要先定义符号变量 syms

函数极值

fminbnd

[x, fval, exitflag] = fminbnd(fun, x1, x2)

功能:求一元函数 fun 在区间[x1, x2] 内的极小值

参数:x 为极小值点;fval为极小值;exitflag>0 为找到极小值标志

fminsearch

[x, fval, exitflag]=fminsearch(fun, x0)

功能:求多元函数从 x0 出发的局部极小值

注意!多元函数的输入要用向量 x(1), x(2) 而不是 x, y,如以下代码:1

2

3

4

5

6ff=@(x)(100*(x(2)-x(1)^2)^2+(1-x(1))^2);

% 函数句柄 ,@(x)的 x 为输入的向量, 利用两个元素分别进行计算

syms x y,ezsurfc(ff([x1,x2]),[-2,2,-2,2]) % 将横纵坐标x1,x2 认定为

ff 二维自定义变量,即可进行surfc

x0=[-5,-2,2,5;-5,-2,2,5]; % 设立 4 种不同的搜索起点 ( 每一种为列向量

[sx,sfval,sexit,soutput]=fminsearch(ff,x0)

结果:1

2

3

4

5

6

7

8

9

10

11% 收敛到了四种不同的解 , 但仅有第一个x=1,y=1是正确的

sx = 0.99998 -0.68971 0.41507 8.0886

0.99997 -1.9168 4.9643 7.8004

%sfval 显示所有极小值中最小的一个

sfval = 2.4112e-10

sexit = 1

soutput =

iterations: 384

funcCount: 615

algorithm: 'Nelder-Mead simplex direct search'

message: '优化已终止:…’

fminunc

功能,用法与fminsearch 相同,效果通常好于后者

最速梯度下降法

【例】用梯度下降法求𝑓 𝑦,𝑧 = 100 𝑧 − 𝑦 2 2 + 1 − 𝑦 2 的极小值点1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20clear,clc

ff=@(x,y) (100*(y-x^2)^2+(1-x)^2);% 函数及其导数

dff =@(x,y) [2*x - 400*x*(- x^2 + y) - 2;- 200*x^2 + 200*y];

x0 = -5; y0 = -2; % 初始条件(可改变)

x_old = x0;y_old = y0;iter=0;

while(1)

iter = iter+1;

Grad = dff(x_old,y_old); % 梯度方向的获得

lsf = @(lambda) ff(x_old-lambda*Grad(1),y_old-...

lambda*Grad(2)); % 生成对应方向关于步长的一元函数

[lambda,~]=fminbnd(lsf,0,10);% 搜索最佳步长

x_new=x_old-lambda*Grad(1);

y_new=y_old-lambda*Grad(2);

if(abs(x_new-x_old)<1e-8 && abs(y_new-y_old)<1e-8)

break; % 当x 与y 均保持稳定时结束迭代

end

x_old = x_new;y_old = y_new;

end

iter,x_new,y_new

err = ff(x_new,y_new)-0

线性方程组

pcg(A,b,tol)

求解 AX=b,tol 是误差 tolerance

(带有简单的病态预处理)

非线性方程(组)

fzero

[x, fval] = fzero(fun, x0)

以 x0 为初值寻找 fun 的一个零点;

注意 fun 必须是匿名函数或函数句柄!

fsolve

[x, fval] = fsolve(fun, x0)

fun 是函数向量,找函数向量 fun 的一个零点

概率统计

rng default

伪随机。将随机流恢复至 matlab 启动时的默认状态,即可以再现的随机

rng shuffle

真随机。将随机流根据时间变量进行设置,任何一次随机均无法再现,但可以确保测试结果可以与之前已有的测试结果进行累加

rand, randn, randi

rand(m, n):生成 m*n 的均匀分布矩阵

randn(m, n):标准正态分布

randi( [min_int, max_int], m, n):[min_int, max_int]之间的整数均匀分布

binopdf, binocdf, binornd

normpdf, normcdf, normrnd

disttool

makedist1

2

3

4

5

6

7

8

9

10

11

12

13

14>> pd=makedist('Poisson',lambda)

>> pd =

PoissonDistribution

Poisson distribution

lambda = 2

>> pdf(pd,0:3)

ans =

0.1353 0.2707 0.2707 0.1804

mean

mean(A) 计算矩阵 A 各列均值与中位值,返回一个向量(若A 为向量则返回各分量平均值)

median

与 mean 用法相同

std, var

样本标准差,样本方差

cov

cov(X) 计算以矩阵各列组成的列向量的协方差矩阵

如:第(i, j) 个元素代表第 i 列 与 第 j 列这两个列向量之间的协方差

corrcoef

corrcoef 计算以矩阵各列组成的列向量对应的相关系数

如:第(i, j) 个元素代表第 i 列 与 第 j 列这两个列向量之间的相关系数

多项式拟合

polyfit

p = ployfit(x, y, n)

x, y 为维数相等的两个向量(对应的一组坐标);n 为设定的拟合阶数

返回多项式系数向量代码示例1

2

3

4

5

6

7x0=0:0.1:1; %11 点均匀采样

y0=[-.447,1.978,3.11,5.25,5.02,4.66,4.01,4.58,3.45,5.35,9.22];

n=3;P=polyfit(x0,y0,n) %3 次采样 , 共4 个系数 , 从高次到低次

P = 56.6915 -87.1174 40.0070 -0.9043

xx=0:0.01:1;yy=polyval(P,xx);

plot(xx,yy,'-b',x0,y0,'.r','MarkerSize',20)

legend(' 拟合曲线',' 原始数据','Location','SouthEast'),xlabel('x')

polyval

y1 = polyval(p, x0)

将向量 x0 代入多项式 p 中得到一组拟合 y 值 (向量)1

2

3

4

5

6

7y1 = polyval(P,x0); % 观察11 个采样点的拟合值

disp([' 平方逼近误差为',num2str(norm(y1-y0,2))])

平方逼近误差为1.8653

disp([' 一致逼近误差为',num2str(norm(y1-y0,inf))])

一致逼近误差为0.95592

T=table(x0',y0',y1',y1'-y0',...

'VariableNames',{'X', 'Y', 'Fit', 'FitError'})%

结果:1

2

3

4

5

6

7

8

9

10

11

12

13

14T =

X Y Fit FitError

___ ______ ________ _________

0 -0.447 -0.90431 -0.45731

0.1 1.978 2.2819 0.3039

0.2 3.11 4.0659 0.95592

0.3 5.25 4.7879 -0.46211

0.4 5.02 4.788 -0.23204

0.5 4.66 4.4063 -0.25372

0.6 4.01 3.983 -0.027002

0.7 4.58 3.8583 -0.72174

0.8 3.45 4.3722 0.92223

0.9 5.35 5.865 0.51503

1 9.22 8.6768 -0.54316

最小二乘法拟合及其变种

岭回归

表达式:2 - 范数 衡量误差,2 - 范数 衡量系数稀疏性

LASSO

表达式:2 - 范数 衡量误差,1 - 范数 衡量系数稀疏性

适用:拟合时考虑系数的稀疏性(即尽量多的绝对值小的系数)

LAR(最小绝对残差)

表达式:1 - 范数衡量误差

适用:对离群值的处理较好(公交车站)

cftool(matlab自带拟合工具箱)的使用

weight

是一个向量,给误差加权

最小化目标变成 min||W(AX - b)||1

2Weight=ones(1,11);

Weight(5)=100;%使样本数据中的第五个点几乎无误差

数字信号处理信号的数字化需要3个步骤:抽样,量化,编码

噪声:信号传输目标认定为无效或干扰的部分

信噪比(SNR):SNR 即 “signal to noise ratio” ,顾名思义,就是信号与噪声的比值: $10cdot log_{10}frac{Sigma f^2(x)}{Sigma[y-f(x)]^2}$。是衡量去噪效果的一种尺度。 matlab 函数为:snr(signal, noise)

去噪方法:(根据什么选择方法?1.噪声类型和强度;2. 目标函数(真实信号值))

smooth

f1 = smooth(y)

对离散信号向量 y 使用均值滤波得到向量 f1 ,默认为五点均值滤波

conv

f1 = conv(y, [权值向量], ‘same’)

权值向量的维度是多少,就是多少点的均值滤波

二维曲线与图

area(Y)1

2

3

4

5

6Y = [1, 5, 3;

3, 2, 7;

1, 5, 3;

2, 6, 1];

figure

area(Y)

把矩阵 Y 的每一列看成一条线,画 3 条折线(横坐标为 1,2 3 4 )

效果:

plot

axis on :使用轴背景

axis off :取消轴背景

axis equal:横纵轴采用等长刻度

axis square:调整 x, y轴刻度使得图示接近正方形

axis image:横纵等长刻度且坐标轴框贴紧画出来的线

axis tight:把 x, y 范围直接设为坐标范围

xlabel(’期末成绩’)

xticks:

xtickslabel(‘Score’)

text(x, y, ‘压力老大爷’)

fontname{Roman}

fontsize{4}

approx

partial

plotyy1

2

3

4

5

6

7

8

9

10

11

12

13x = 0:0.01:20;

y1 = 200*exp(-0.05*x).*sin(x);

y2 = 0.8*exp(-0.5*x).*sin(10*x);

figure % new figure

[hAx,hLine1,hLine2] = plotyy(x,y1,x,y2);

%图柄,后面设置y坐标名字要用

title('Multiple Decay Rates')

xlabel('Time (musec)')

ylabel(hAx(1),'Slow Decay') % left y-axis

ylabel(hAx(2),'Fast Decay') % right y-axis

傅里叶变换

连续傅里叶变换

离散傅里叶变换

定义:

”低频系数“:Y(1)

”高频系数“:除了Y(1)之外的所有值(Y(2), Y(3),……)

fft(X)

ifft(Y)

去噪方法:保留大于阈值的系数,砍掉小于阈值的系数

效果:傅里叶变换对于三角函数去噪效果极佳,因为三角函数在此

变换系数满足完美稀疏,对于分片光滑函数效果则一般,根据 目标函数特性 选择 合适变换及约束(正则化)方法 很关键

声音信号

audioinfo

[y, Fs] = audioread

y是声音的数字信号,两列分别为左右声道

Fs 是采样率(44100个连在一起的离散信号构成了一秒的声音)

sound(y, Fs)

按采样率 Fs 播放 y

audiowrite(‘Drown.flac’, y, Fs)

将声音写入文件

多项式表示与运算

多项式表示为向量(系数降幂 排列)

conv(a,b)1

2N = conv([3 0 1],[1 0 3 1]);

D = conv([2 3],[2 0 3]);

[Q,r] = deconv(N,D)1[Q, r] = deconv(N,D) %计算 N%D 的带余除法,即N=QD+r

回代验证误差:易错!因为 余式 维数不确定!1

2

3

4

5m = length(r);

N1 = conv(Q, D);

N1(end - m + 1 : end) = N1(end - m + 1 : end) + r;

norm(N1 - N) % 绝对误差

norm(N1 - N)/norm(N) %相对误差

roots(f)

返回多项式 f(x)的零点向量

poly(r)

输入:零点向量[x1, x2, … ,xn]

输出:多项式(x-x1)(x-x2)…(x-xn)

polyval(p, X)

与前面向量类似,将矩阵 X 中的每个值代进去 多项式 p 中,输出相同大小的矩阵(p($x_{ij}$))

polyvalm(p, X)

即polyval matrix

矩阵多项式(如 ODE 基解矩阵)

poly2str(p, ‘x’)1

2q = [2 2 3]

poly2str(q,'s')

胞元矩阵

一言以蔽之,就是元素可以是不同类型的矩阵。如:1

2

3

4

5

6clear

C_str='例 这是胞元数组创建算例 1'; %

R=reshape(1:9,3,3);

Cn=[1+2i];

syms t, S_sym=sin(-3*t)*exp(-t);

B{1,1}=C_str; B{1,2}=R;B{2,1}=Cn;B{2,2}=S_sym;%四个元素类型不同

两种援引元素的方式:B(1, 2)援引元素类型

B{1, 2}援引元素内容(即元素本身)

如:1

2

3

4

5a = B(1,2)

class(a)

输出:a = [3*3 double]

ans = cell1

2

3

4

5

6

7b = B{1,2}

class(b)

输出:b = 1 4 7

2 5 8

3 6 9

ans = double

应用实例:

注意给胞元赋值时是:A(2,1) = {‘David’} 或 A{2,1} = ‘David’1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20clear;

%满分(100) ,优秀(90-99) ,良好(80-89) ,及格(60-79) ,不及格(<60)

for k=1:10

a(k)={89+k};b(k)={79+k};c(k)={69+k};d(k)={59+k};% 每个胞元是数

end;

c=[d,c];%60~69 与70~79 归为同一类

% 输入学生的名字和分数

A=cell(3,5); %A 也定义成胞元数组

A(1,:)={'Jack','Marry','Peter','Rose','Tom'};

A(2,:)={72,83,56,94,100};

% 根据学生的分数 , 求出相应的等级 。

for k=1:5

switch A{2,k} % 对A{2,k} 进行判断

case 100,r=' 满分';

case a,r=' 优秀'; % 若A{2,k} 出现在胞元数组a 中 , 即介于90 和99 之间

case b,r=' 良好';

case c,r=' 及格';

otherwise,r=' 不及格';% 其余情况 , 结果字符串r 为’ 不及格’

end

A(3,k)={r}; % 将胞元数组A

小技巧

如何避免代入pi 时出现莫名其妙的大分数?用 sym(pi) ,且越靠里越好!1

2a = sym(1/pi);

b = 1/sym(pi);

运行结果:

a = 5734161139222659/18014398509481984;

b = 1/pi .

mod与rem

都是返回整除余数,但符号mod看除数rem看被除数1

2mod(-2,3) = 1; rem(-2,3) = -2

mod(3,-2) =

命令窗备忘clf(clear figure):清楚图形窗口

clc(clear command):清楚指令窗中显示内容

clear:清楚 matlab 工作空间中保存的变量

doc:在 matlab浏览器中显示帮助信息

edit:打开 M文件编辑器

help:在指令窗中显示帮助信息

close all :关闭所有弹出窗口

helpwin :在弹出窗口中显示帮助信息

format short:通常保证小数点后4位有效,最多不超过7位。对于大于1000的实数用5位有效数字科学计数法显示

format long:小数点后15位有效数字表示

format short e:5位科学计数法表示

format long e:16为科学计数法表示

format long g:从 format long 和format long e 中自动选择最佳

format rat:近似有理数表示

format hex :十六进制表示

whos:显示所有内存变量类别

isa(a, ‘sym’):判断变量类型

digits:显示当前vpa命令的截断位数(用于规定运算精度)

digits(n):设置vpa 命令的截断位数为n

vpa(运算表达式):对其中的每一个运算都控制精度,并非只控制结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

报表系统的雄心

这周有朋自远方来&#xff0c;聊了对报表工具的看法&#xff0c;因此专门写篇文章来谈谈报表系统的未来。 笔者知道不可能有十全十美的报表系统&#xff0c;毕竟任何一个行业和企业受自身客观环境的限制&#xff0c;但表哥嘛&#xff0c;总要有点理想和追求&#xff0c;就好比到…

vuefullcalendar怎么判断切换上下月_房间太多、楼上楼下,终极解决家里wifi信号无缝切换问题...

相信不少人有我一样的烦恼&#xff0c;房间太多&#xff0c;或者楼上楼下&#xff0c;家里的wifi信号总是不能无缝切换。路由器放在配电箱&#xff0c;除了客厅信号不错外&#xff0c;一旦到了其他房间&#xff0c;掉线、网速慢等问题让人很苦恼。特别是和小伙伴一起玩游戏一边…

手把手教你 Spark 性能调优

0、背景 集群部分 spark 任务执行很慢&#xff0c;且经常出错&#xff0c;参数改来改去怎么都无法优化其性能和解决频繁随机报错的问题。 看了下任务的历史运行情况&#xff0c;平均时间 3h 左右&#xff0c;而且极其不稳定&#xff0c;偶尔还会报错&#xff1a; 1、优化思路 任…

pytorch线性回归代码_[PyTorch 学习笔记] 1.3 张量操作与线性回归

本章代码&#xff1a;https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/linear_regression.py张量的操作拼接torch.cat()torch.cat(tensors, dim0, outNone)功能&#xff1a;将张量按照 dim 维度进行拼接tensors: 张量序列dim: 要拼接的维度代码示例&#…

《UNIXLinux程序设计教程》一2.1 UNIX 输入输出基本概念

2.1 UNIX 输入输出基本概念 在任何一种操作系统中&#xff0c;程序开始读写一个文件的内容之前&#xff0c;必须首先在程序与文件之间建立连接或通信通道&#xff0c;这一过程称为打开文件。打开一个文件的目的可能是要读其中的数据&#xff0c;也可能是要往其中写入数据&…

c语言编常见算法,5个常见C语言算法

5个常见C语言算法十进制转换为二进制的递归程序字符串逆置的递归程序整数数位反序&#xff0c;例如12345->54321四舍五入程序(考虑正负数)二分法查找的递归函数#include#include#include//十进制转换为二进制的递归程序voidDecimalToBinary(int n){if(n<0){printf("…

利用Kinect将投影变得可直接用手操控

Finally 总算是到了这一天了&#xff01;假期里算法想不出来&#xff0c;或者被BUG折磨得死去活来的时候&#xff0c;总是YY着什么时候能心情愉快地坐在电脑前写一篇项目总结&#xff0c;今天总算是抽出时间来总结一下这神奇的几个月。 现在回过头来看&#xff0c;上学期退出AC…

springboot自动配置的原理_SpringBoot自动配置原理

SpringBoot的启动入口就是一个非常简单的run方法&#xff0c;这个run方法会加载一个应用所需要的所有资源和配置&#xff0c;最后启动应用。通过查看run方法的源码&#xff0c;我们发现&#xff0c;run方法首先启动了一个监听器&#xff0c;然后创建了一个应用上下文Configurab…

Django first lesson 环境搭建

pycharm ide集成开发环境 &#xff08;提高开发效率&#xff09; 解释器/编译器编辑器调试环境虚拟机连接 设置VirtualBox端口 操作1 操作2 点击号添加&#xff0c;名称为SSH&#xff0c;其中主机端口为物理机的端口&#xff0c;这里设置为1234&#xff0c;子系统端口为虚拟机的…

《Drupal实战》——3.3 使用Views创建列表

3.3 使用Views创建列表 我们接着讲解Views的设置&#xff0c;首先做一个简单的实例。 3.3.1 添加内容类型“站内公告” 添加一个内容类型“站内公告”&#xff0c;属性配置如表3-1所示。 为该内容类型设置Pathauto的模式news/[node:nid]&#xff0c;并且我们在这里将节点类型…

idea mybatis generator插件_SpringBoot+MyBatis+Druid整合demo

最近自己写了一个SpringBootMybatis(generator)druid的demo1. mybatisgenerator逆向工程生成代码1. pom文件pom文件添加如下内容&#xff0c;引入generator插件org.mybatis.generator mybatis-generator-maven-plugin 1.3.5 mysql …

python isalnum函数_探究Python中isalnum()方法的使用

探究Python中isalnum()方法的使用 isalnum()方法检查判断字符串是否包含字母数字字符。 语法 以下是isalnum()方法的语法&#xff1a; str.isa1num() 参数 NA 返回值 如果字符串中的所有字符字母数字和至少有一个字符此方法返回 true&#xff0c;否则返回false。 例子 下面的例…

动态规划算法——最长上升子序列

今天我们要讲的是最长上升子序列&#xff08;LIS&#xff09;。【题目描述】给定N个数&#xff0c;求这N个数的最长上升子序列的长度。【样例输入】      【样例输出】7        42 5 3 4 1 7 6那么什么是最长上升子序列呢&#xff1f; 就是给你一个序列…

如何快速掌握一门新技术/语言/框架

IT行业中的企业特点是都属于知识密集型企业。这种企业的核心竞争力与员工的知识和技能密切相关。而如果你在企业中扮演的是工程师的角色的话&#xff0c;那么 你的核心竞争力就是IT相关的知识与技能的储备情况。而众所周知&#xff0c;IT行业是一个大量产生新知识的地方&#x…

c语言今天星期几问题,C语言输入今天星期几

满意答案迷茫03222015.07.24采纳率&#xff1a;55% 等级&#xff1a;9已帮助&#xff1a;665人123456789101112131415161718192021#include<stdio.h>int main(void){ enum weekday{ sun, mon, tue, wed, thu, fri, sat }; int n; printf("输入星期数(0-…

备忘录模式 详解

定义 在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff1b; 行为型模式 角色 发起人角色&#xff08;Originator&#xff09;&#xff1a;记录当前时刻的内部状态&#xff0c;负责定义哪些属于备份范围的状态&#xf…

dll oem证书导入工具_技术干货 | 恶意代码分析之反射型DLL注入

欢迎各位添加微信号&#xff1a;qinchang_198231 加入安全 交流群 和大佬们一起交流安全技术01技术概要这是一种允许攻击者从内存而非磁盘向指定进程注入DLL的技术&#xff0c;该技术比常规的DLL注入更为隐蔽&#xff0c;因为除了不需要磁盘上的实际DLL文件之外&#xff0c;它…

锐捷亮相GITC:请互联网企业为我点个赞!

【51CTO.com原创稿件】GITC全球互联网技术大会已成功举办四届&#xff0c;今年的会议现场依然是摩肩接踵围观者众。围绕互联网热点技术&#xff0c;众人根据云、大数据、安全、运维、基础架构的不同主题&#xff0c;各自聚成小圈子展开深入交流。 锐捷的展位在主会场的内侧&…

react.lazy 路由懒加载_React lazy/Suspense使用及源码解析

React v16.6.0已经发布快一年了&#xff0c;为保障项目迭代发布&#xff0c;没有及时更新react版本&#xff0c;最近由于开启了新项目&#xff0c;于是使用新的react版本进行了项目开发。项目工程如何搭建&#xff0c;如何满足兼容性要求&#xff0c;如何规范化等等这里不作为介…

c语言数据结构系统化,C语言数据结构+数据库+操作系统

http://cv.qiaobutang.com/post/55c419b20cf2009bd4607795第二部分是专业相关的C &#xff0c;数据库&#xff0c;操作系统&#xff0c;数据结构。http://c.biancheng.net/cpp/u/shuju/数据(Data)是信息的载体&#xff0c;它能够被计算机识别、存储和加工处理。它是计算机程序加…