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:是否含有一定鍵值

元胞
定義:元胞可以把不同類型的數(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ù)值等間隔分布。
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以瓦特為單位。
- 分貝(decibel,dB):分貝(dB)是表示相對(duì)功率或幅度電平的標(biāo)準(zhǔn)單位,換句話說,就是我們用來表示兩個(gè)能量之間的差別的一種表示單位,它不是一個(gè)絕對(duì)單位。例如,電子系統(tǒng)中將電壓、電流、功率等物理量的強(qiáng)弱通稱為電平,電平的單位通常就以分貝表示,即事先取一個(gè)電壓或電流作為參考值(0dB),用待表示的量與參考值之比取對(duì)數(shù),再乘以20作為電平的分貝數(shù)(功率的電平值改乘10)。
- 分貝瓦(dBW, dBWatt):指以1W的輸出功率為基準(zhǔn)時(shí),用分貝來測量的功率放大器的功率值。
- 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)告
?