Matlab學(xué)習(xí)總結(jié)

MATLAB基本數(shù)據(jù)類型

雙精度/單精度/整形

數(shù)據(jù)的范圍

數(shù)據(jù)類型 數(shù)值范圍
int8 -27,27-1
int16 -2{15},2{15}-1
int32 -2{31},2{31}-1
int64 -2{63},2{63}-1
uint8 0,2^{8}-1
uint16 0,2^{16}-1
uint32 0,2^{32}-1
uint64 0,2^{64}-1
single $$-3.4\times 10^{38}, 3.4\times 10^{38} $$
double $$-1.79\times 10^{308}, 1.79\times 10^{308} $$

務(wù)必注意溢出的問題。

函數(shù)

  • 類型檢查

class

isa(x, ‘double’)

  • 范圍檢查

intmax, intmin

realmax,realmin

intmax(‘uint32’)

  • 類型轉(zhuǎn)換

int8(x), uint32(x), double(x)

字符串

ASCII: AmericanStandard Code for Information.

MATLAB將字符串當(dāng)作一個(gè)行向量,每個(gè)元素對(duì)應(yīng)一個(gè)字符,其標(biāo)識(shí)方法和數(shù)值向量相同。

若需要查詢與字符串或者字符相關(guān)的指令,可以輸入

help strfun
help strings

存儲(chǔ)多個(gè)字符串

  • 二元字符串序列:保證每個(gè)單詞長度相同。
  • char指令:departments = char('ee', 'cs', 'econ')

函數(shù)

  • length:字符串長度
  • ischar,class:判斷字符串:
  • strcmp,strcmpi,strncmp:比較異同
  • strrep:字符串查找并替換:
  • strtok:字符串分解
  • strvcat:分解字符串重組
  • 字符串?dāng)?shù)值轉(zhuǎn)換:int2str, num2str, dec2hex, hex2num, hex2dec,bin2dec
  • sprintf:輸出
  • fprintf('%s',char(ii))
  • abs\double:字符轉(zhuǎn)ASCII值

  • char:ASCII轉(zhuǎn)字符

  • str2num:字符串轉(zhuǎn)數(shù)字

  • num2str:數(shù)字轉(zhuǎn)字符串

  • [str1, str2]:字符串連接

  • upper:將string變?yōu)榇髮懙?/p>

    ?

結(jié)構(gòu)體

結(jié)構(gòu)體是一種數(shù)據(jù)容器,可以包含不同的類型的元素。一個(gè)結(jié)構(gòu)體對(duì)象就是1*1的結(jié)構(gòu)體數(shù)組。大多數(shù)圖像處理應(yīng)用中,元素對(duì)元素的組織方式不是最佳的,經(jīng)常需要訪問元素的字跡時(shí),可以選用結(jié)構(gòu)體,根據(jù)

1:r.ssn =12345678,r.address.street = '742 Evergreen Terrace',

2:patient =struct(‘name’, {‘Tom’, ‘lili’, []}), ‘billing’, {11, 23, []})

函數(shù)

struct2cell:轉(zhuǎn)換為胞體

isstruct:是否為結(jié)構(gòu)陣列

isfield:是否含有一定鍵值

3
3

元胞

定義:元胞可以把不同類型的數(shù)據(jù)歸并到一個(gè)數(shù)組中,每一個(gè)元素叫做單元。

創(chuàng)建:1、使用賦值語句創(chuàng)建的兩種創(chuàng)建方法;2、使用cell函數(shù)創(chuàng)建

  • c(1, 1) ={‘Clayton’}

c{1, 1} = ‘Clayton’

  • arrayName = cell(m,n)
  • B = {'James Bond', [1 2;3 4;5 6]; pi, magic(5)}

訪問:{}訪問時(shí),返回細(xì)胞單元的數(shù)據(jù),如:B{1,2}。()訪問時(shí)返回細(xì)胞數(shù)組的子數(shù)組,可能不返回實(shí)際內(nèi)容,如B(1,2)。

刪除:arrayName{x,y}=[] 或者B(1,:) = []

函數(shù)

cellplot:圖形顯示

celldisp:顯示全部內(nèi)容或者A{:}

iscell:判斷是否為胞體

num2cell:數(shù)值陣列轉(zhuǎn)換為胞體

mat2cell:數(shù)值陣列轉(zhuǎn)換為胞體,可以處理比較復(fù)雜的轉(zhuǎn)換

struct2cell :結(jié)構(gòu)體轉(zhuǎn)換為胞體

deal:結(jié)構(gòu)體某一個(gè)鍵值轉(zhuǎn)換為胞體

嵌套

結(jié)構(gòu)體數(shù)組

也叫作元素對(duì)元素組織。這種方式訪問子集比較容易。

x.a=zeros(...);     #初始化
x.b=zeros(...);
x.c=zeros(...);
for j =1:daycount(num)      #賦值
    m(j).month = monthlist{1,num};
    m(j).date = j;
end

嵌套單元整列

多重花括號(hào)是關(guān)鍵

簡單例子:A(1,1)= {{‘第二層’,[1;2;3;4]; [-1,-1], {‘第三層’, 17}}}

function m = year2016(num)
% month,day is cell
    daylist = {'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'};
    monthlist = {'January', 'February','March', 'April','May','June',...
        'July', 'August', 'September', 'October', 'November','December'};
    daycount = [31,29,31,30,31,30,31,31,30,31,30,31];
    cal = cell(1,12);
    for i = 1:12
        cal{1,i} = cell(1,daycount(i));
    end
    for i =1:12
        for j = 1:daycount(i)
            cal{1,i}{1,j}.month = monthlist{1,i};
            cal{1,i}{1,j}.date = j;
            daynumber = 0;
            for k = 1:i-1
                daynumber = daynumber + daycount(k);
            end
            daynumber = daynumber + j;
            % first day in 2016 is Friday
            daymark = rem((daynumber +3), 7) +1;
            cal{1,i}{1,j}.day =daylist{1, daymark};
        end
    end
    m = cal{1, num};    
end

常量

persistent name;
if isempty(name)
    %...
end
output = name;

符號(hào)變量

a = sym(‘a(chǎn)’);
syms a

符號(hào)常量

c = sym(‘3’);

符號(hào)表達(dá)式

syms x
f = 3*x + 6;

函數(shù)

  • simplify(S):化簡
  • eval(S):符號(hào)轉(zhuǎn)數(shù)值
  • factor、expand、collect:符號(hào)表達(dá)式的因式分解、展開、合并同類項(xiàng)
  • subs:符號(hào)函數(shù)值的求解
  • limit:符號(hào)極限
  • diff:符號(hào)微分
  • int:符號(hào)積分
  • symsum:符號(hào)級(jí)數(shù)求和
syms n      %級(jí)數(shù)求和
f = 1/n^2;
s1 = symsum(f,n, 1, inf)
  • taylor:泰勒級(jí)數(shù)
syms x
y = (1 + x +x^2)/(1 - x + x^2);
taylor(y, 6, 1)
  • solve:符號(hào)代數(shù)方程和方程組
clear
syms x
solve(x + x*exp(x) - 10)
clear
eval(solve('x + x*exp(x) - 10'))
% 方程組
[x y] = solve('x + y - 98', 'x^(1/3) + y^(1/3) - 2', 'x, y')
  • dsolve:符號(hào)常微分方程
dsolve('Dy -(x^2 + y2)/x2/2', 'x')
  • subs:代入真實(shí)值
syms x
f = cos(x) + x;
subs(f, x, 1)

變量為空

如果"沒賦值"表示變量不存在,那么可以用如下語句

if~exist('x','var')
  x = 1;
end

如果"沒賦值"表示變量為空(實(shí)際在workspace中存在),那么可以使用如下語句

if isempty('x')
  x = 1;
end

空變量可以通過x = zeros(1,0)或者zeros(0,1)或者x= []實(shí)現(xiàn)

fix:判斷是否整數(shù):fix(x)~= x:

ismember:判斷是否是成員。可用于矩陣、向量標(biāo)量。

rem(a, b):求余數(shù)

prod(X):對(duì)X元素求積

換行繼續(xù)寫:…

輔助函數(shù):who\whos\clear\save

save filename
save filename x y z

數(shù)據(jù)輸出時(shí)用戶可以用format命令設(shè)置或改變數(shù)據(jù)輸出格式。format命令的格式為:

format 格式符

其中格式符決定數(shù)據(jù)的輸出格式.

format rat:轉(zhuǎn)換為分?jǐn)?shù)

結(jié)構(gòu)體

isstruct():是否是結(jié)構(gòu)體

fieldname():返回所有成員名

isfield(a, x1):判斷是否是結(jié)構(gòu)體成員

rmfield()

getfield()

cell

cell:成員可以不同類型。

a = {1, ‘str’, [11 12 13 14]}

常用數(shù)學(xué)函數(shù)

函數(shù) 意義 函數(shù) 意義 函數(shù) 意義
abs 絕對(duì)值或復(fù)數(shù)的模 ceil 向正方向取整 sign 符號(hào)函數(shù)
angle 相位角 floor 向負(fù)方向取整 rem 求余函數(shù)
sqrt 平方根 fix 截尾取整 exp 指數(shù)函數(shù)
real 實(shí)部 round 四舍五入取整 log 自然對(duì)數(shù)
imag 虛部 conj 共軛復(fù)數(shù) log10 常用對(duì)數(shù)
sin 正弦 cos 余弦 tan 正切
asin 反正弦 acos 反余弦 atan 反正切
sinh 雙曲正弦 cosh 雙曲余弦 tanh 雙曲正切
asinh 反雙曲正弦 acosh 反雙曲余弦 atanh 反雙曲正切
bessel 貝塞爾函數(shù) rat 有理逼近 ellipj 雅可比橢圓函數(shù)

rem與mod函數(shù)的相同和區(qū)別:rem(x,y)和mod(x,y)都是取余數(shù)的函數(shù),要求x,y必須為相同大小的實(shí)矩陣或?yàn)闃?biāo)量。rem的返回值與被除數(shù)符號(hào)相同,mod的返回值與除數(shù)符號(hào)相同。

內(nèi)存變量

save 文件名 [變量名表][-ascii]

load 文件名 [變量名表] [-ascii]

其中,文件名可以帶路徑,但不需帶擴(kuò)展名.mat,命令隱含一定對(duì).mat文件進(jìn)行操作。變量名表中的變量個(gè)數(shù)不限,只要內(nèi)存或文件中存在即可,變量名之間以空格分隔。當(dāng)變量名表省略時(shí),保存或裝入全部變量。-ascii選項(xiàng)使文件以ASCII格式處理,省略該選項(xiàng)時(shí)文件將以二進(jìn)制格式處理。

矩陣

;表示換行

特殊矩陣

zreos\ones\eye\randn\magic\Hilbert\Toeplitz

  • 范得蒙矩陣A=vander(v)

范得蒙(Vandermonde)矩陣最后一列全為1,倒數(shù)第二列為一個(gè)指定的向量(基礎(chǔ)向量),其他各列是其后列與倒數(shù)第二列對(duì)應(yīng)元素的乘積(或基礎(chǔ)向量的n-1次冪)。可以用一個(gè)指定向量生成一個(gè)范得蒙矩陣,函數(shù)vander(V)生成以向量V為基礎(chǔ)向量的范得蒙矩陣。

  • 伴隨矩陣compan(p)

其中p是一個(gè)多項(xiàng)式的系數(shù)向量,高次冪系數(shù)排在前,低次冪排在后

  • 帕斯卡矩陣pascal(n)

二次項(xiàng)(x+y)n展開后的系數(shù)隨n的增大組成一個(gè)三角形表,稱為楊輝三角形。由楊輝三角形表組成的矩陣稱為帕斯卡(Pascal)矩陣。函數(shù)pascal(n)生成一個(gè)n階帕斯卡矩陣。

  • 聚合矩陣

矩陣聚合是通過連接一個(gè)或多個(gè)矩陣來形成一個(gè)新的矩陣。矩陣的行列數(shù)會(huì)自動(dòng)增加,以容納新增加的元素。C=[A B]水平。C=[A;B]豎直聚合。repmat函數(shù)可以利用已有矩陣的多個(gè)拷貝來創(chuàng)建大矩陣。repmat(A,v,h)

矩陣運(yùn)算

find(A == 8);           %返回8的序號(hào)數(shù)
sub2ind(size(A),m,n);   %位置轉(zhuǎn)序號(hào)
ind2sub(size(A),9);
repmat(A, m , n);       %復(fù)制
unique(A);              %去掉重復(fù)的內(nèi)容
Jordan(A);              %求解Jordan標(biāo)準(zhǔn)型
eig(A);                 %求解特征值
norm(A, n);             %求解矩陣的n范數(shù)
diff(A, n);             %求解n階導(dǎo)數(shù)
fumn(A, @exp);          %求解矩陣函數(shù)
expm(A);                %求解expA 
size(A);                %返回矩陣每一維的長度(大小)。
length(A);              %測矩陣的各維數(shù)的最大值(長度)。
ndims(A);               %返回矩陣的維數(shù)。
numel(A);               %返回矩陣的元素個(gè)數(shù)。 
reshape (A,m,n);        %重塑矩陣
rot90(A,k);             %將矩陣A逆時(shí)針旋轉(zhuǎn)90o的k倍,當(dāng)k為1時(shí)可省略。
fliplr(A);              %左右翻轉(zhuǎn)函數(shù)
flipud(A);              %上下翻轉(zhuǎn)函數(shù)
flipdim(A,dim)          %按維翻轉(zhuǎn)函數(shù)

復(fù)數(shù)矩陣

C=[1 2;34]+1i*[5 6;7 8]

值1i中的1一般不能省略,因?yàn)楸M管i變量通常表示虛單位,但是有可能被用戶事先更改過,而1i是常數(shù)而不是變量,其值是固定的。

稀疏矩陣

大部分元素都是0,只存儲(chǔ)非0元素的位置及其值。

函數(shù)

  • sparse:轉(zhuǎn)換成稀疏矩陣
  • spdiags:對(duì)角元素構(gòu)建稀疏矩陣
  • spconvert:將一個(gè)$$m\times 3$$矩陣轉(zhuǎn)換為稀疏矩陣

矩陣索引

“單下標(biāo)”標(biāo)識(shí)

采用矩陣元素的序號(hào)來引用矩陣元素。矩陣元素的序號(hào)就是相應(yīng)元素在內(nèi)存中的排列順序。在MATLAB中,矩陣元素按列存儲(chǔ),先第一列,再第二列,依次類推。A(3)。

end-表示某一維的末尾元素下標(biāo)。

命令 使 用 說 明
A(r,c) 由A的“r”指定行和“c”指定列的元素構(gòu)成
A(r,:) 由A的“r”指定行和“全部”列的元素構(gòu)成
A(:,c) 由A的“全部”行和“c”指定列的元素構(gòu)成
A(:) A的各列按自左到右的次序,首尾相接生成一維數(shù)組
A(s) 生成“s指定的”一維數(shù)組。s可以是行數(shù)組或列數(shù)組。
A(r,c)=Sa 以雙下標(biāo)方式對(duì)子數(shù)組賦值。表達(dá)式兩邊必須同維。
A(:)=D(:) 全元素賦值。兩數(shù)組總元素?cái)?shù)相等即可。
A(s)=Sa 以單下標(biāo)方式對(duì)部分元素賦值。Sa和s元素總數(shù)須相同

矩陣的偽逆

如果矩陣A不是一個(gè)方陣,或者A是一個(gè)非滿秩的方陣時(shí),矩陣A沒有逆矩陣,但可以找到一個(gè)與A的轉(zhuǎn)置矩陣A‘同型的矩陣B,使得:A·B·A=A;B·A·B=B。此時(shí)稱矩陣B為矩陣A的偽逆,也稱為廣義逆矩陣。在MATLAB中,求一個(gè)矩陣偽逆的函數(shù)是pinv(A)。

矩陣的跡

矩陣的跡等于矩陣的對(duì)角線元素之和,也等于矩陣的特征值之和。在MATLAB中,求矩陣的跡的函數(shù)是trace(A)。

向量運(yùn)算

點(diǎn)積dot(a,b)a b必須同維

叉積cross(a,b)a b必須同維且有一維維數(shù)為3

混合積dot(a,cross(b,c))ab c必須同維且函數(shù)順序不可顛倒

向量的長度sqrt(dot(a,a))

  • ?

畫圖

基本繪圖函數(shù)

平面繪圖

x plot(x, y);       %x:vector,y:matrix,多條曲線按行對(duì)應(yīng)                
                    %x:matrix,y:matrix,列對(duì)應(yīng)多條                
                    %可以加顏色和標(biāo)識(shí):k, *…
xlabel(‘’);
ylabel(‘’);
title(‘’);
text(pos_x,pos_y, ‘’)
legend(‘’, ‘’)  %增加兩個(gè)圖例
axis off/on     %坐標(biāo)軸控制,需在plot指令之后呼叫才能有用
axis square hold on/off     %圖形保持
subplot(2, 2,1) %窗口劃分
semilogx(x,sin(x));         % 使x軸為對(duì)數(shù)刻度,對(duì)其三角函數(shù)作圖
plotyy(x, y1,x, y2);        % 畫出刻度不同的 y軸,分別是 y1, y2
plot(x, y,‘CLM‘)            %C:曲線的顏色 (Colors)                         
                            %L:曲線的樣式 (Line Styles)  
                            %M:曲線標(biāo)記(Markers) 
plot(x, y,‘k:diamond’);     %其中k代表黑色,:代表點(diǎn)%diamond則指定菱形為曲線的標(biāo)記
axis([xmin,xmax, ymin, ymax])
set(gca, ‘ytick’,[-1 -0.3 0.1 1]);         %在y軸加格線點(diǎn)
grid on;                                    % 加上格線
set(gca,'ytick', [-1 -0.3 0.1 1]);           %改變格線點(diǎn)
set(gca, ‘yticklabel’, {‘極小’,’臨界值’,’崩潰值’,’極大’}); % 改變格線點(diǎn)的文字
%colordef:改變背景顏色先呼叫 colordef 指令,然后 plot 指令產(chǎn)生的圖像才有效;
%用box on 畫出外圍的長方形gtext
%用鼠標(biāo)決定文字的位置

(1)hold off 使當(dāng)前軸及圖形不在具備被刷新的性質(zhì)。

(2)hold on 和hold off是相對(duì)使用的:

前者的意思是,你在當(dāng)前圖的軸(坐標(biāo)系)中畫了一幅圖,再畫另一幅圖時(shí),原來的圖還在,與新圖共存,都看得到;后者表達(dá)的是,你在當(dāng)前圖的軸(坐標(biāo)系)中畫了一幅圖,此時(shí),狀態(tài)是hold off,則再畫另一幅圖時(shí),原來的圖就看不到了,在軸上繪制的是新圖,原圖被替換了。

圖表指令

  • 柱狀圖:bar,barh,bar3,bar3h
  • 面積圖:area
  • 扇形圖:pie,pie3
  • 針頭圖: stem,stem3
  • 階梯圖: stairs
  • 實(shí)心圖: fill,fill3
  • 向量場圖:quiver,quiver3
  • 等高線圖:contour,meshc,surfc,contour3,polar
  • ?

立體繪圖

mesh:可立體的網(wǎng)狀圖(Mesh Plots)

surf:立體的曲面圖Surface Plots)

meshgrid 的作用是產(chǎn)生 x 及 y (均是向量) 為基準(zhǔn)的格子點(diǎn)(GridPoints),其輸出為 xx 及 yy(均為矩陣),分別代表格子點(diǎn)的 x 坐標(biāo)及 y 坐標(biāo)。

meshz 指令有將曲面加上「圍裙」或「舞臺(tái)」的效果

waterfall 指令可在 x 方向或 y 方向產(chǎn)生水流效果

meshc 可同時(shí)畫出網(wǎng)狀圖形「等高線」

plot3 指令可畫出三度空間中的曲線

在繪制網(wǎng)狀圖時(shí),MATLAB會(huì)隱藏被遮蓋的網(wǎng)線,若要使被遮蓋的網(wǎng)線亦能呈現(xiàn)出來,可用 hidden off 指令

rotate3d on/off允許(on)或取消(off)以拖動(dòng)鼠標(biāo)來旋轉(zhuǎn)三維軸。

colorbar:利用 colorbar 指令,可顯示 MATLAB 如何以不同顏色來代表曲面的高度

底層繪圖函數(shù)

h=line(‘pro1’,val1,’pro2’,val2, ‘lineWidth’, 1,’lineStyle’, ‘:’, ‘Color’, ‘r’, ‘MarkerSize’, 1 )
htext = text(0,0, ‘Sin(x)’);
set(htext, ht,‘FontSize’, 20,String, ‘Cos(x)’);
hf=figure;
ha=axes(‘Parent’, hf, ‘Units’, ‘pixels’, ‘position’, [10, 10, 10, 10])

循環(huán)

e1:e2:e4初始:步長:終止

linspace不指定元素之間的增量,而是指定等間隔分布的元素個(gè)數(shù),logspace按對(duì)數(shù)值等間隔分布。

linspace(a,b,n)

logspace(a,b,n)

其中a和b是生成向量的第一個(gè)和最后一個(gè)元素,n是元素總數(shù)。

輸入輸出

nargin:輸入個(gè)數(shù)

nargout:輸出個(gè)數(shù)

varargin:輸入?yún)?shù),默認(rèn)元胞類型

varargout:輸出參數(shù)

error(nargchk(2,4, nargin)):檢測輸入個(gè)數(shù)是不是在2-4,否則產(chǎn)生error

isscalar(m):m是否是一個(gè)標(biāo)量

notebook in matlab

從MATLAB中啟動(dòng)Notebook:notebook 或者notebook 文件名

定義輸入單元,可以使用Notebook菜單,或者組合鍵“Alt+D”;

選擇菜單中的“Evaluate Cell”或者組合鍵“Ctrl+Enter”執(zhí)行單元,直接顯示輸出。

定義自動(dòng)初始化單元:選擇菜單中的“DefineAutoInit Cell”

單元組定義:一般程序是按行單獨(dú)運(yùn)行的,for循環(huán)就會(huì)有問題。所以有這個(gè)。

符號(hào)計(jì)算

多項(xiàng)式化簡:

syms x;
simplify(sin(x)^2+ cos(x)^2)
ans = 1
simplify((x^2 +5*x + 6)/(x + 2))
ans = x + 3

多項(xiàng)式展開

syms s
ps=((s^2+1))^3*(s+5)^2*(s^4+4*s^2+7)
ps1=expand(ps)

獲取多項(xiàng)式系數(shù)

syms x
f=3*x^5 + 2*x^2;
A=sym2poly(f)

求方程零點(diǎn)

syms t
ft = exp(t)- t^2 -6;
s = slove(ft, t);

文件輸入和輸出

CMD命令

  • ls:顯示當(dāng)前目錄文件
  • ls(‘wen’):顯示文件夾內(nèi)部文件
  • cd(dictionary):切換到指定目錄
  • pwd:返回當(dāng)前目錄
  • cd(‘..’):后退
  • cd(‘name’):切換到子文件夾

Excel函數(shù)

xlsread:

[num,txt,raw]= xlsread('Nashville_climate.xlsx');
num =xlsread('Nashville_climate.xlsx', 1, ‘D15:E17’); 

xlswrite

text函數(shù)

打開:fid =fopen(filename, permission)

關(guān)閉:fclose(fid)

function view_text_file(filename)
  fid = fopen(filename,'rt');
  if fid < 0
    error('error opening file %s\n\n', filename);
  end
  % Read file as a set of strings, one string per line:
  oneline = fgets(fid);
  while ischar(oneline)
    fprintf('%s',oneline) % display one line
    oneline = fgets(fid);
  end
  fprintf('\n');
  fclose(fid);
end
操作
‘rt’ 讀操作
'wt' 寫操作
'at' 打開或者創(chuàng)建新文件,并在文件的最后添加數(shù)據(jù)
'r+t' 打開文本文件用于讀和寫
'w+t' 打開或者創(chuàng)建文本文件用于讀和寫,丟棄原有的內(nèi)容
'a+t' 打開或者創(chuàng)建文本文件用于讀和寫,在文件的末尾增加數(shù)據(jù)

二進(jìn)制函數(shù)

寫:

function write_array_bin(A,filename)
  fid = fopen(filename,'w+');
  if fid < 0
    error('error opening file %s\n‘, filename);
  end
  fwrite(fid,A,'double');
  fclose(fid);
end

讀:

function A = read_bin_file(filename,data_type)
  fid =fopen(filename,'r');
  if fid < 0
    error('erroropening file %s\n',filename);
  end
  A =fread(fid,inf,data_type);
  fclose(fid);
end

信號(hào)

高斯白噪聲

  • wgn:產(chǎn)生高斯白噪聲
    • y = wgn(m,n,p) 產(chǎn)生一個(gè)m行n列的高斯白噪聲的矩陣,p以dBW為單位指定輸出噪聲的強(qiáng)度。
    • y =wgn(m,n,p,imp) 以歐姆(Ohm)為單位指定負(fù)載阻抗。
    • y =wgn(m,n,p,imp,state) 重置RANDN的狀態(tài)。

在數(shù)值變量后還可附加一些標(biāo)志性參數(shù):

  • y = wgn(…,POWERTYPE) 指定p的單位。POWERTYPE可以是'dBW','dBm'或'linear'。線性強(qiáng)度(linear power)以瓦特(Watt)為單位。
  • y = wgn(…,OUTPUTTYPE)指定輸出類型。OUTPUTTYPE可以是'real'或'complex'。

  • awgn:在某一信號(hào)中加入高斯白噪聲

    • y = awgn(x,SNR) 在信號(hào)x中加入高斯白噪聲。信噪比SNR以dB為單位。x的強(qiáng)度假定為0dBW。
    • y =awgn(x,SNR,SIGPOWER) 如果SIGPOWER是數(shù)值,則其代表以dBW為單位的信號(hào)強(qiáng)度;如果SIGPOWER為'measured',則函數(shù)將在加入噪聲之前測定信號(hào)強(qiáng)度。
    • y =awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的狀態(tài)。

y = awgn(…,POWERTYPE) 指定SNR和SIGPOWER的單位。POWERTYPE可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB為單位,而SIGPOWER以dBW為單位。如果POWERTYPE是'linear',那么SNR作為比值來度量,而SIGPOWER以瓦特為單位。

  1. 分貝(decibel,dB):分貝(dB)是表示相對(duì)功率或幅度電平的標(biāo)準(zhǔn)單位,換句話說,就是我們用來表示兩個(gè)能量之間的差別的一種表示單位,它不是一個(gè)絕對(duì)單位。例如,電子系統(tǒng)中將電壓、電流、功率等物理量的強(qiáng)弱通稱為電平,電平的單位通常就以分貝表示,即事先取一個(gè)電壓或電流作為參考值(0dB),用待表示的量與參考值之比取對(duì)數(shù),再乘以20作為電平的分貝數(shù)(功率的電平值改乘10)。
  2. 分貝瓦(dBW, dBWatt):指以1W的輸出功率為基準(zhǔn)時(shí),用分貝來測量的功率放大器的功率值。
  3. dBm(dB-milliWatt):即與1milliWatt(毫瓦)作比較得出的數(shù)字。

0 dBm = 1 mW

10 dBm = 10 mW

20 dBm = 100 mW

也可直接用randn函數(shù)產(chǎn)生高斯分布序列,例如:

y=randn(1,2500);
y=y/std(y); 
y=y-mean(y); 
a=0.0128; 
b=sqrt(0.9596); 
y=a+b*y;

均勻分布白噪聲

% L 為信號(hào)長度
% mean為均值
% var為方差
% rand函數(shù)產(chǎn)生的是幅值為【0,1】均勻分布的白噪聲,均值為1/2,方差為1/12
% 使用下面的公式可以產(chǎn)生指定均值和方差的均勻分布的白噪聲
% 在matlab中,可以使用函數(shù):mean(white_noise)來檢驗(yàn)其均值
% 使用函數(shù):var(white_noise)來檢驗(yàn)其方差
white_noise=  (rand(1,L) - 0.5 ) * sqrt( 12 * var )+ mean;

指數(shù)分布白噪聲:exprnd(mu, m, n)

逆z變換

syms z
f = 2*z/(z-2)^2
iztrans(f)

內(nèi)插法

interp1原理是運(yùn)用奪下你給是來進(jìn)行內(nèi)插運(yùn)算。

method說明:

  • nearest:最近點(diǎn)內(nèi)插法
  • linear:線性內(nèi)插法
  • spline:片段式的三次 Spline 內(nèi)插法
  • pchip:保持形狀的片段式三次內(nèi)插,相當(dāng)于不會(huì)高于最高點(diǎn),不會(huì)產(chǎn)生過擬合
  • cubic:和pchip 一樣

interpft,可進(jìn)行基于FFT(Fast Fourier Transform,快速傅里葉變換)的內(nèi)插法

interp2 ,指令可進(jìn)行二維內(nèi)插

griddata ,分散無規(guī)律點(diǎn)的內(nèi)插

interp3:可進(jìn)行 3 維內(nèi)插

曲線擬合

polyfit:多項(xiàng)式擬合

編程效率

循環(huán)的執(zhí)行效率低下,因?yàn)檫@是一個(gè)解釋型語言。

提高效率的辦法:矩陣或者向量操作,避免2重以上的循環(huán);預(yù)分配。

計(jì)時(shí)方法

tic\toc用于計(jì)算程序運(yùn)行時(shí)間。

個(gè)別函數(shù)的計(jì)時(shí)方法

profile on -detail mmex     % 啟動(dòng)定時(shí)器
% ```
%functions here
% ```
profile off         % 停止計(jì)時(shí)器
profile report             % 計(jì)時(shí)報(bào)告

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,071評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,360評(píng)論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,895評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,123評(píng)論 0 286
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,643評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,559評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,742評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評(píng)論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,981評(píng)論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評(píng)論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,354評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,707評(píng)論 2 370

推薦閱讀更多精彩內(nèi)容