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.pswp.cn/news/394769.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394769.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394769.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

spring管理的類如何調用非spring管理的類

spring管理的類如何調用非spring管理的類. 就是使用一個spring提供的感知概念,在容器啟動的時候,注入上下文即可. 下面是一個工具類. 1 import org.springframework.beans.BeansException;2 import org.springframework.context.ApplicationContext;3 import org.springframewo…

django構建網頁_如何使用Django構建照片供稿

django構建網頁by Ogundipe Samuel由Ogundipe Samuel 如何使用Django構建照片供稿 (How to build a photo feed using Django) Today, we will make a real-time photo feed framework using Django and Pusher. This is like a mini Instagram, but without the comments and…

報表系統的雄心

這周有朋自遠方來&#xff0c;聊了對報表工具的看法&#xff0c;因此專門寫篇文章來談談報表系統的未來。 筆者知道不可能有十全十美的報表系統&#xff0c;畢竟任何一個行業和企業受自身客觀環境的限制&#xff0c;但表哥嘛&#xff0c;總要有點理想和追求&#xff0c;就好比到…

02----mockjs基本使用

一.mockjs基本使用 1.安裝mockjs cnpm install mockjs --save-dev2.新建mockjs文件夾/index.js // 引入 Mock var Mock require(mockjs)// 定義數據類型 var data Mock.mock({// 20條數據"data|20": [{// 商品種類"goodsClass": "女裝",// 商品…

vuefullcalendar怎么判斷切換上下月_房間太多、樓上樓下,終極解決家里wifi信號無縫切換問題...

相信不少人有我一樣的煩惱&#xff0c;房間太多&#xff0c;或者樓上樓下&#xff0c;家里的wifi信號總是不能無縫切換。路由器放在配電箱&#xff0c;除了客廳信號不錯外&#xff0c;一旦到了其他房間&#xff0c;掉線、網速慢等問題讓人很苦惱。特別是和小伙伴一起玩游戲一邊…

C語言程序順序結構1交換變量,如何將c語言中結構體內的所有類型變量的值輸出來...

教了多年《C程序設計》課程&#xff0c;大多學生覺的這門課程難學。其實&#xff0c;按照我們現在的教學大綱和教學要求&#xff0c;只要同學們掌握一些方法&#xff0c;克服心理上畏難、不輕言放棄&#xff0c;是完全可以學好的。《C 程序設計》的內容很豐富&#xff0c;按照我…

尼古拉斯 android_圣尼古拉斯和Alexa的訪問

尼古拉斯 android祝大家圣誕節快樂&#xff0c;并祝大家晚安&#xff01; (Happy Christmas to all, and to all a good night!) Inspired by the holiday season, emerging voice-first technology, and too much eggnog — I’ve twisted the classic poem from Clement Clar…

github 進階說明

目錄 github 進階說明前言三個目錄樹重置 git reset增加路徑的reset檢出 checkout帶路徑的checkout倉庫數據對象其他資料github 進階說明 前言 我們可以什么都不管&#xff0c;照搬命令來完成我們大部分git工作&#xff0c;但是如果想要進一步&#xff0c;就要深入理解git的實現…

手把手教你 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: 要拼接的維度代碼示例&#…

軟考考前沖刺第十三章UML建模

1.如果一個對象發送了一個同步消息&#xff0c;那么它要等待對方對消息的應答&#xff0c;收到應答后才能繼續自己的操作。而發送異步消息的對象不需要等待對方對消息的應答便可以繼續自己的操作。 2.部署圖描述了一個運行時的硬件結點&#xff0c;以及在這些結點上運行的軟件組…

sqlalchemy_SQLAlchemy使ETL變得異常簡單

sqlalchemyOne of the key aspects of any data science workflow is the sourcing, cleaning, and storing of raw data in a form that can be used upstream. This process is commonly referred to as “Extract-Transform-Load,” or ETL for short.任何數據科學工作流程的…

c語言枚舉代替雙switch,C語言 使用數組代替switch分支語句降低圈復雜度

#include typedef int(*CALCULATE_FUN)(int, int); //定義函數指針typedef struct tagStruct{CALCULATE_FUN fun_name; //結構體成員&#xff0c;存放函數char calc_flag; //結構體成員&#xff0c;存放符號}CALC_STRUCT;/* 加減乘除函數聲明 */int fun_add(int x, int y);int …

基礎DP(初級版)

本文主要內容為基礎DP&#xff0c;內容來源為《算法導論》&#xff0c;總結不易&#xff0c;轉載請注明出處。 后續會更新出kuanbin關于基礎DP的題目...... 動態規劃&#xff1a; 動態規劃用于子問題重疊的情況&#xff0c;即不同的子問題具有相同的公共子子問題&#xff0c;在…

《UNIXLinux程序設計教程》一2.1 UNIX 輸入輸出基本概念

2.1 UNIX 輸入輸出基本概念 在任何一種操作系統中&#xff0c;程序開始讀寫一個文件的內容之前&#xff0c;必須首先在程序與文件之間建立連接或通信通道&#xff0c;這一過程稱為打開文件。打開一個文件的目的可能是要讀其中的數據&#xff0c;也可能是要往其中寫入數據&…

python時間計算_日期天數差計算(Python)

描述 從json文件中讀取兩個時間數據&#xff08;數據格式例如&#xff1a;2019.01.01&#xff0c;數據類型是字符串&#xff09;&#xff0c;并計算結果&#xff0c;打印出兩個時間間隔了多少天。 輸入/輸出描述 輸入描述 json文件名稱datetime.json&#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…

my-medium.cnf_您的手機如何打開medium.com-我將讓門衛和圖書管理員解釋。

my-medium.cnfby Andrea Zanin由Andrea Zanin 您的手機如何打開medium.com-我將讓門衛和圖書管理員解釋。 (How your phone opens medium.com — I’ll let a doorman and a librarian explain.) Hey did you notice what just happened? You clicked a link, and now here y…

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

SpringBoot的啟動入口就是一個非常簡單的run方法&#xff0c;這個run方法會加載一個應用所需要的所有資源和配置&#xff0c;最后啟動應用。通過查看run方法的源碼&#xff0c;我們發現&#xff0c;run方法首先啟動了一個監聽器&#xff0c;然后創建了一個應用上下文Configurab…