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); %全部元素排序

矩阵幂运算与矩阵函数

胞元数组

内容援引: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

符号绘图

各种例子详见第四课课件

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 相同,效果通常好于后者

最速梯度下降法

【例】用梯度下降法求

c语言fmin最小公倍数,matlab小函数相关推荐

  1. matlab把向量转化为矩阵,MATLAB小函数:将列向量转化为0-1矩阵

    MATLAB小函数:将列向量转化为0-1矩阵 将列向量转化为0-1矩阵,例如 A = 1 2 1 5 3 4 1 4 3 转换为: B = 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 ...

  2. c语言fmin最小公倍数,已知函式f(x)=2分之1cos的平方x加2分之根号3sinxcosx加1,X属于R 。求在[π/12,π/4]上的最大最小值...

    已知函式f(x)=2分之1cos的平方x加2分之根号3sinxcosx加1,X属于R .求在[π/12,π/4]上的最大最小值以下文字资料是由(历史新知网www.lishixinzhi.com)小编为 ...

  3. c语言不用死等的延时函数,matlab延时函数怎么写

    1. c语言延时函数delay,怎么算延时 下面是delay 函延迟函数里执行的都是空语句,也就是说通过循环执行空语句来达到延迟的目的.每执行一条语句,即使是空语句都要耗费电脑一些处理时间的,就是因为 ...

  4. C语言_公倍数、最小公倍数_调用函数求最大公因数最小公倍数

    公倍数:两个或两个以自然数共同的倍数. 最小公倍数:两数(多个数)相乘除以两数(多个数)的最大公约数. //最小公倍数 #include<stdio.h> int main() {int ...

  5. 如何将matlab代码转为C语言(2)--在C++中调用matlab的函数

    如何将matlab代码转为C语言(2)–在C++中调用matlab的函数 在上一条博文中提供了一种直接在matlab操作中的方法,下面提供一种新的调用方法,即在C++中调用matlab中的dll文件. ...

  6. Matlab mod函数 对应C语言 函数

    Matlab mod函数 对应C语言 函数 2010-09-10 23:43 Matlab中的mod函数,不同于C语言中的"%",在C中没有专门对应的函数. Matlab的mod函 ...

  7. 编写C语言的最简单小程序Hello world和函数使用

    编写C语言的最简单小程序Hello world 一.示例一 1.编写demo.c程序 #include<stdio.h> int main() {printf("Hello wo ...

  8. C语言设计函数求最大公约数,C语言程序设计课程设计--编写函数求取两个整数m,n的最大公约数和最小公倍数.doc_在线文库www.lddoc.cn...

    C语言程序设计课程设计--编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc C语言程序设计课程设计C语言程序设计课程设计评语考勤(10)纪律(10)过程(40)设计报告(30)答辩(10) ...

  9. xml文件c语言读取函数,读写xml文件的2个小函数

    #region 读写xml文件的2个小函数,2005 4 2 by hyc public void SetXmlFileValue(string xmlPath,string AppKey,strin ...

最新文章

  1. 劣质代码评析——《写给大家看的C语言书(第2版)》附录B之21点程序(一)
  2. 在ThoughtWorks工作两个多月的总结
  3. python typing typescript_将 python 数据转化为 TypeScript 格式
  4. Kinect开发笔记之四检测并调试Kinect设备
  5. SpringMVC在使用Jackson2时关于日期类型格式化的问题
  6. python 循环播放音乐_python gstreamer实现视频快进/快退/循环播放功能
  7. 开启IIS的WebGarden、WebFarm和StateServer之旅
  8. 个人整理的常用python脚本【很好用】
  9. VS2013 Qt Unable to find a Qt Build 及 LINK1112错误
  10. oracle数据库应用中实现汉字“同音”查询(转)
  11. 李宏毅20212022机器学习
  12. 代码版本控制用SVN还是Git好?
  13. wei.getA()
  14. semantic_slam环境配置
  15. 【第十四篇】Flowable事件-错误事件
  16. 【数据挖掘·总复习】第三章-关联规则挖掘||Apriori||详细整理||知识点+例题||考点有
  17. 科学,宗教和信仰,以及神
  18. React18升级和React18新特性
  19. 2008文件服务器没有写入权限,2008文件服务器权限设置
  20. 获取Android 设备的WIFI IPv4地址

热门文章

  1. redis终端简单命令
  2. python面向对象-1方法、构造函数
  3. 架构师未来性的基础:简单性
  4. django时间问题和时区设置
  5. Human_height
  6. jquery数据折叠_通过位折叠缩小大数据
  7. 1984. 学生分数的最小差值
  8. 数据挖掘—Apriori算法(Java实现)
  9. 如何使用Create React App DevOps自动化工作中所有无聊的部分
  10. seaborn分类数据可视:散点图|箱型图|小提琴图|lv图|柱状图|折线图