信号处理杂学Matlab
一. 入门
- 注意混频响应,需要抗混叠,奈奎斯特采样定理
- 模拟低通滤波器可以抗混叠,数字低通滤波器
- 原理

谐波叠加:一个激波的n次谐波等同于其振幅强度的1/n,一个方波即一个激波和多个谐波叠加而成
- 时域向频域转化
第一步:采样。尺寸或快长度(size) = 采样数量(2的次方)转化为数据
第二步:正弦波频幅和块计算时域相关性,实现最佳匹配(相当循环对块中每个频率的幅值进行枚举,选出相关性最大的):


此处幅值单位为bin,代表着相关性大小。Δ代表频率分辨率,除非快长度改变,否则Δf不变
第三步:窗函数:

弥散/泄露: 由于采样可能造成误差(及采样出现断层),没有完美匹配起始点和终点,导致存在无关bin。

选择合适窗函数:关系到筛选目的

如海宁窗 适合多频率混叠在一起的,直接压制,频率可选性更大
哈布斯窗频率更窄,适合找出高斯谐波


第四步:平均
A.经典平均:每几块进行平均 B.指数平均:采样区间逐步移动

第五步:频谱显示
Peak模式显示的是频谱中最高的单个峰值,即峰值幅度。这种模式适用于对信号进行峰值检测和频率分析,用于确定信号的主要频率成分和幅度。
Power模式显示的是信号在一定频率范围内的平均功率,可以反映信号的总能量。这种模式适用于对信号的功率和能量进行分析。




目的:通过让两个块之间的过渡更平滑减少弥散

二. Matlabfft变换
data = csvread('1.csv', 1, 0); % 忽略第一行标题行
emg =data(:,2);
emg_fft = fft(emg); %傅里叶变换后有实频和虚频,对称,虚频无意义
%构图
hold on
emg_amp = abs(emg_fft) %取得变换后的值,表示振幅
plot(emg_amp)
L = length(emg_amp);
real_plt = plot(1:L/2, emg_amp(1:L/2)) %只取实频图,前是横坐标,后是纵坐标
real_plot.Color(4) = 0.2 %4通道表示透明度%横坐标频率化
figure
Fs = 1e6 %设置采样率
f = Fs*(1:(L/2))/L;
plot(f, emg_amp(1:L/2));%纵坐标量纲还原
figure
plot(f, emg_amp(1:L/2)/(L/2));
- 根据奈奎斯特定理,需将频率归一化,即通过将设计参数中的频率除以采样率的一半(fs/2);
-
希望将归一化频率转换回实际频率,可以使用公式:实际频率 = 归一化频率 * (采样率 / 2);
-
f = Fs*(1:(L/2))/L;代码中的
(1:(L/2))表示从1到L/2的整数序列。这个序列表示频域中正频率部分的索引。因为在频谱上,正频率和负频率是对称的,而正频率部分的长度是L/2。通过将这个序列除以L,即(1:(L/2))/L,可以将索引值转换为归一化的频率值。归一化频率的范围是从0到0.5,其中0对应直流分量,0.5对应采样率的一半。这样可以获得归一化频率轴上的频率值。
- dB = 20*log10(signal/noise);
- 查找某函数用法:命令行输入doc 函数,也可以直接输入doc查看新手教学
- 肌电信号60-80hz
- 工作电极,参考电极,地电极
- 工作电极贴在肌腹,即变化最明显地区;
- 参考电极放在无明显变化区域,主要作用是形成回路
- 地电极远放,目的是设备接地,使得两电极置于同一水平
- 减少振动
- 远离插板等干扰源
三. fdatool






Fpass指的是开始衰减的hz,Fstop指的是衰减变化结束的区域。
fir具有线性相位变化性,可能会带来时域上的延迟,但不同频率的延迟衰减有规律,适合低hz的引用。specify order 的阶数越高,要求的算力越高,但是一般采用的是200阶左右。iir不同频率可能不同。

comb需要慎用,不管是否有此信号的谐波干扰都会滤掉它的谐波区间的信号造成信号损失!!
- fdatool--命令行输入

-
load('*.mat') %应该是mat格式的数据文件,载入此文件 Fs = 2e3; %确定了采样率为2000hz bp = filter(fdatool导出文件名,需处理文件名); subplot(121) %画图框 plot(shujuming) %填数据 - 如图dB = 20*log10(signal/noise),代表着有用信号和无用噪声间的比值。
- db即可以代表衰减系数,当db= -40时相当于衰减100倍(10的db/20次方)
- 阻带的意思是尽可能的衰减掉此区间频率,不可能完全消除
- file -export-(export to workspace,export as object)
- 带通滤波(Bandpass filter):它可以让某一特定频率范围内的信号通过,而把其他频率的信号滤除。具体来说,带通滤波器允许通过的信号在一个频率范围内具有一定的增益,而在这个频率范围之外的信号则被削弱或完全被滤除。
- 陷通滤波(notching):相当于非常窄的带阻滤波器,可过滤50hz工频干扰,下降速度较快

代码iirnotch(,)解决
%6143hz的陷波滤波器
%emg = filter(notching_6143hz,emg);
wo = 6143/(Fs/2); bw = wo/60; %bw 表示带宽
[b, a] = iirnotch(wo, bw);
emg = filter(b, a, emg);
- 巴特沃斯线通滤波器

代码解决
数据导入:
1.读取csv文件:
data = csvread('filename.csv', 1, 3, [1,3,inf,5]); % 忽略第一行标题行和前三列和第六列
%第二个参数 1 表示忽略第一行(标题行),第三个参数 3 表示忽略前三列,
%最后一个参数 [1,3,inf,5] 表示只读取第五列以及第四列之后的所有列。inf 表示读取到文件末尾。
2.只读取某一列序列:
emg =data(:,2);%读取第二行
3.
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
