文章目录
- 函数
- freqz函数(求出滤波器的幅值响应和相角响应)
- impz(产生滤波器的脉冲响应)
- grpdelay(求出群延迟响应)
- fvtool函数(显示滤波器的各种响应曲线)
- dfilt(离散时间滤波器)
- fir1(用窗函数法设计FIR滤波器)
- fir2(用频率采样法设计FIR滤波器)
- firpmord(计算等波纹FIR滤波器的阶数)
- firpm(等波纹FIR滤波器)
- 使用GUI设计滤波器后,导出matlab代码
- contour函数
- meshgrid函数
- pdf函数
- random函数
- 波形产生函数
- db2pow函数/db2mag函数/pow2db函数/mag2db函数
- axis tight
- 位操作函数
- typecast函数
- gtext函数
- fft函数(可以操作矩阵)
- filter函数(可以操作矩阵)
- mode求取众数
- exist检查变量、脚本、函数、文件夹或类的存在情况
- find查找特定元素的索引和值(能够指定所查找的符合条件的元素个数、查找方向)
- shiftdim(移动数组维度)
- sortrows(对矩阵行或表行进行排序)
- circshift(循环平移数组)
- flipud(将数组从上向下翻转)
- fliplr(将数组从左向右翻转)
- flip(翻转元素顺序)
- deg2rad/degtorad函数
- rad2deg/radtodeg函数
- sum函数(支持指定维数的求和运算、支持略去NaN)
- max函数(支持指定维数的运算、支持nanflag)
- min函数(与max函数类似)
- bsxfun函数(对两个矩阵A和B之间的每一个元素进行指定函数的计算,并且具有自动扩维的作用)
- semilogy函数(将y坐标轴用对数值表示出来)
- sfdr函数(计算无杂散动态范围)
- snr函数(计算信噪比)
- snr函数(计算信纳比->信号+噪声+谐波的功率与谐波+噪声的功率比值)
- thd函数(计算总谐波失真Total Harmonic Distortion)
- toi函数(计算三阶截断点 IP3: third-order intercept point)
- rms函数(计算均方根)
- 切换查看各级堆栈
- assignin函数(为工作空间的变量指派值)
- 输入输出参数相关函数(nargin、nargout、varargin、varargout等)
- fileparts(获取文件名的组成部分)
- fullfile(利用文件各部分信息创建合成完整文件名)
- isfolder、isfile函数(判断是否是文件夹、文件)
- 文件操作函数(movefile、copyfile、mkdir等)
- 特征值、特征向量计算(eig)
- funm函数(计算常规矩阵函数)
- mfilename(当前正在运行的代码的文件名)
- addParameter(在输入解析器模式中添加可选的名称-值对组参数)
- prod(计算数组元素的乘积)
- 使用assert断言函数
- cat(串联数组)
- buffer(将 向量信号 缓存为 帧信号 矩阵)
- cumsum(累计和)
- var函数
- pskmod
- rectpulse
- intdump
- able2array(将表转换为同构数组)
- type xxx.p(判断p文件的版本类型)
- movegui(将图窗移动到屏幕上的指定位置)
- 线性代数函数一览
- 其他
搬自Matlab的Help
函数
freqz函数(求出滤波器的幅值响应和相角响应)

clc;clear all;close all;
b=[1 -0.5];
a=[1];
[H,w]=freqz(b,a,200);
HF=abs(H); %求出幅频特性值
HX=angle(H); %求出相频特性值
subplot(2,1,1);plot(w,HF); %画出幅频特性曲线
subplot(2,1,2);plot(w,HX); %画出相频特性曲线
b = [1 0 0 0 1];
a = [1];
f = 0:100:10000;
FS = 5000;
figure;freqz(b,a,f,FS)

impz(产生滤波器的脉冲响应)
% All frequency values are in Hz.
Fs = 48000; % Sampling Frequency
Fpass = 9600; % Passband Frequency
Fstop = 12000; % Stopband Frequency
Dpass = 0.057501127785; % Passband Ripple
Dstop = 0.0001; % Stopband Attenuation
dens = 20; % Density Factor
% Calculate the order from the parameters using FIRPMORD.
[N, Fo, Ao, W] = firpmord([Fpass, Fstop]/(Fs/2), [1 0], [Dpass, Dstop]);
b = firpm(N, Fo, Ao, W, {dens});
figure;freqz(b);
figure;impz(b);

grpdelay(求出群延迟响应)

fvtool函数(显示滤波器的各种响应曲线)
% All frequency values are in Hz.
Fs = 48000; % Sampling Frequency
Fpass = 9600; % Passband Frequency
Fstop = 12000; % Stopband Frequency
Dpass = 0.057501127785; % Passband Ripple
Dstop = 0.0001; % Stopband Attenuation
dens = 20; % Density Factor
% Calculate the order from the parameters using FIRPMORD.
[N, Fo, Ao, W] = firpmord([Fpass, Fstop]/(Fs/2), [1 0], [Dpass, Dstop]);
b = firpm(N, Fo, Ao, W, {dens});
fvtool(b);

dfilt(离散时间滤波器)

fir1(用窗函数法设计FIR滤波器)

fir2(用频率采样法设计FIR滤波器)

firpmord(计算等波纹FIR滤波器的阶数)

firpm(等波纹FIR滤波器)

rp = 3; % Passband ripple
rs = 40; % Stopband ripple
fs = 2000; % Sampling frequency
f = [500 600]; % Cutoff frequencies
a = [1 0]; % Desired amplitudes
dev = [(10^(rp/20)-1)/(10^(rp/20)+1) 10^(-rs/20)];
[n,fo,ao,w] = firpmord(f,a,dev,fs);
b = firpm(n,fo,ao,w);
freqz(b,1,1024,fs)
title('Lowpass Filter Designed to Specifications')
Fs = 48000; % Sampling Frequency
使用GUI设计滤波器后,导出matlab代码

Fs = 48000; % Sampling Frequency
Fpass = 9600; % Passband Frequency
Fstop = 12000; % Stopband Frequency
Dpass = 0.057501127785; % Passband Ripple
Dstop = 0.0001; % Stopband Attenuation
dens = 20; % Density Factor
% Calculate the order from the parameters using FIRPMORD.
[N, Fo, Ao, W] = firpmord([Fpass, Fstop]/(Fs/2), [1 0], [Dpass, Dstop]);
% Calculate the coefficients using the FIRPM function.
b = firpm(N, Fo, Ao, W, {dens});
Hd = dfilt.dffir(b);
% [EOF]
contour函数

meshgrid函数
用来生成网格矩阵

pdf函数
pdf函数封装了众多类型的概率密度函数,参数如下,

xg = linspace(-6,6,1500); % randowm variable between -6 and 6
xr = linspace(0,6,1500); % randowm variable between 0 and 6
mu = 0; % zero mean Gaussain pdf mean
sigma = 1.5; % standard deviation (sqrt(variance)
ynorm = normpdf(xg,mu,sigma); % use MATLAB funtion normpdf
yray = raylpdf(xr,sigma); % use MATLAB function raylpdf
y_normal = pdf('normal',xg,mu,sigma);
y_ray = pdf('rayleigh',xr,sigma); % use MATLAB function raylpdf
plot(xg,ynorm,'k',xr,yray,'k-.',xg,y_normal,'b*',xr,y_ray,'r*');
grid
legend('Gaussian pdf','Rayleigh pdf')
xlabel('x')
ylabel('Probability density')
% gtext('\mu = 0; \sigma = 1.5')
% gtext('\sigma =1.5')

random函数
random函数封装了众多类型的随机数函数,参数如下,

波形产生函数

db2pow函数/db2mag函数/pow2db函数/mag2db函数
各个函数用法类似,仅贴一图,

axis tight

位操作函数

typecast函数

gtext函数

fft函数(可以操作矩阵)

filter函数(可以操作矩阵)

mode求取众数

exist检查变量、脚本、函数、文件夹或类的存在情况

find查找特定元素的索引和值(能够指定所查找的符合条件的元素个数、查找方向)

shiftdim(移动数组维度)

sortrows(对矩阵行或表行进行排序)

circshift(循环平移数组)

flipud(将数组从上向下翻转)

fliplr(将数组从左向右翻转)

flip(翻转元素顺序)

deg2rad/degtorad函数
rad2deg/radtodeg函数
sum函数(支持指定维数的求和运算、支持略去NaN)


max函数(支持指定维数的运算、支持nanflag)

min函数(与max函数类似)
bsxfun函数(对两个矩阵A和B之间的每一个元素进行指定函数的计算,并且具有自动扩维的作用)
两个非“单一维度”相互匹配的数组a和b做函数fun运算时,bsxfun会隐含扩充a或b使得a和b结构相同,以便实现逐元素运算。其中,fun可以是函数句柄或者m文件,也可以是内置函数。

当然,现在matlab也已经很强大了,可以直接进行维数不同的向量的运算,

semilogy函数(将y坐标轴用对数值表示出来)

clc;close all;clear all;
N = 1024;
FS = 1000;
t = (0:N-1)/FS;
f = 100;
sig = cos(2*pi*f*t);
y_fft = abs(fft(sig));
figure;
subplot(131);
plot(y_fft);
title('常规画图');
subplot(132);
plot(y_fft);
semilogy(y_fft);
title('绘图之后对坐标轴log10,变换了值域的表示方式');
subplot(133);
plot(log10(y_fft));
title('绘图之前对数据取log10,变换了值域');

sfdr函数(计算无杂散动态范围)

snr函数(计算信噪比)
snr函数(计算信纳比->信号+噪声+谐波的功率与谐波+噪声的功率比值)
thd函数(计算总谐波失真Total Harmonic Distortion)
toi函数(计算三阶截断点 IP3: third-order intercept point)
clc;close all;clear all;
N = 1024;
FS = 1000;
t = (0:N-1)/FS;
f = 100;
sig = cos(2*pi*f*t);
sig_with_noise = awgn(sig,10,'measured');
figure;
snr(sig_with_noise)
figure;
sfdr(sig_with_noise)
figure;
sinad(sig_with_noise)
figure;
thd(sig_with_noise)




rms函数(计算均方根)



切换查看各级堆栈

assignin函数(为工作空间的变量指派值)
MATLAB通常的基本工作空间是’base’空间。MATLAB在程序运行过程中,将为每个函数分配它自己的函数工作空间(从基本空间中分割出的一块, 以函数名作为其工作空间名),各个工作空间之间的变量是不能够直接引用的,在函数退出之后,该函数空间也就立即被注销。因此,对于函数文件,运行结果除输出变量返回到基本工作空间或者其父工作空间(调用该函数的程序的工作空间)之外,其他中间变量不在基本工作空间或者其父工作空间保留。而对于脚本M文件,其工作空间与基本工作空间’base’是共享的,其运算过程中所用到的中间变量也将在基本工作空间’base’中保留。

输入输出参数相关函数(nargin、nargout、varargin、varargout等)

fileparts(获取文件名的组成部分)

fullfile(利用文件各部分信息创建合成完整文件名)

isfolder、isfile函数(判断是否是文件夹、文件)
文件操作函数(movefile、copyfile、mkdir等)

特征值、特征向量计算(eig)

funm函数(计算常规矩阵函数)

mfilename(当前正在运行的代码的文件名)

addParameter(在输入解析器模式中添加可选的名称-值对组参数)

prod(计算数组元素的乘积)

使用assert断言函数

assert(isequal(1,2),'测试条件不满足');
assert(isequal(2,2));
cat(串联数组)

buffer(将 向量信号 缓存为 帧信号 矩阵)

cumsum(累计和)

var函数

clc;clearvars;close all;
t = 0:0.001:10;
x = sin(2*pi*t);
px = norm(x).^2/length(x); %计算信号x的功率
ratio=20;
pn = px./(10.^(ratio./10)); %根据snr计算噪声功率
n = sqrt(pn)*randn(1,length(x));
y = x+n;
subplot(2,1,1);plot(t,x);title("正弦信号x")
subplot(2,1,2);plot(t,y);title("叠加了高斯白噪声后的正弦信号")
var(x)
var(n)
pskmod

rectpulse

intdump

able2array(将表转换为同构数组)

type xxx.p(判断p文件的版本类型)
type xxx.p
如果返回值是"v01.00v00.00",则该p文件是使用R2007b或以后的版本创建的,否则是之前的版本创建的,返回值是"v00.00v00.00"。
movegui(将图窗移动到屏幕上的指定位置)

线性代数函数一览

其他
区域注释

为函数添加help说明

为figure设置name

global(全局变量)


局部函数(Local Functions)

嵌套函数(Nested Functions)

匿名函数(Anonymous Functions)

输出结果显示为分数形式
format rat
本文详细介绍了Matlab中用于信号处理和滤波器设计的各种函数,包括freqz、impz、grpdelay、fvtool等,以及如何使用这些函数进行滤波器的幅值响应、相角响应、脉冲响应和群延迟响应的计算,并展示了如何通过GUI设计滤波器并导出代码。


2327

被折叠的 条评论
为什么被折叠?



