信号处理杂学Matlab | 您所在的位置:网站首页 › Matlab怎么用纵坐标除以横坐标 › 信号处理杂学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需要慎用,不管是否有此信号的谐波干扰都会滤掉它的谐波区间的信号造成信号损失!! 代码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. |
CopyRight 2018-2019 实验室设备网 版权所有 |