matlab读取二进制float数组,巴特沃斯10hz低通滤波器滤波

本文通过MATLAB实现了一种信号处理流程,包括信号读取、频谱分析及Butterworth滤波器的设计与应用。展示了如何使用fft进行频谱分析,并详细解释了滤波器的设计过程及其对信号的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

f = fopen('C:\Users\Administrator\Desktop\20161117_090257.z', 'rb');
[zac, count] = fread(f, inf, 'float');
time = 0 : 0.008 : (count - 1) * 0.008; 

figure(1);
subplot(3, 1, 1);
plot(time, zac);

fs = 125;
n = 4096;
zacfft = fft(zac, n);                           % fft  
zacfft(1) = zacfft(2);

fre = ((1 : 1 : n) - 1) * fs / n;               % fre  
amp = abs(zacfft) / (n / 2);                    % amp  

xiangwei = angle(zacfft) * 180 / pi;  
subplot(3, 1, 2);  
plot(fre(1:n/2), amp(1:n/2));  
subplot(3, 1, 3);  
plot(fre(1:n/2), xiangwei(1:n/2));

% batewosi ditong filter
tongdb = 1;
zudb = 30;
tongfre = 2 * 8 / fs;
zufre = 2 * 12 / fs;
% batewosi zuixiaojieshu he jiezhi pinlv
[filterorder, filterwn] = buttord(tongfre, zufre, tongdb, zudb);
% fengzi he fengmu
[fengzi, fengmu] = butter(filterorder, filterwn);
% pingxiang moren 512 dian, pingxiangfushu he pinlvdian
[freqzfushu, freqzfre] = freqz(fengzi, fengmu);
figure(2);
subplot(2, 1, 1);
plot(freqzfre, abs(freqzfushu));
subplot(2, 1, 2);
plot(freqzfre, angle(freqzfushu));

% filter
zacfilter = filter(fengzi, fengmu, zac);
figure(3);
subplot(2, 1, 1);
plot(time, zacfilter);

 % filter fft
zacfilterfft = fft(zacfilter, n);
zacfilterfft(1) = zacfilterfft(2);
zacfilterfftamp = abs(zacfilterfft) / (n / 2);
subplot(2, 1, 2);
plot(fre(1:n/2), zacfilterfftamp(1:n/2));

fread函数要注意大端模式和小端模式

大端 fread(f, inf, 'float', 'b');

小端 fread(f, inf, 'float', 'l');

fread(f, inf, 'float', 'n');是以原来的模式读取,原来是大端就是大端,原来是小端就是小端。




### 巴特沃斯低通滤波器的时间特性分析 巴特沃斯低通滤波器具有特定的时间域特性,这些特性与其频率响应密切相关。由于其全极点结构以及零点位于无穷远的特点[^1],该类滤波器表现出平滑过渡的幅度响应,在时间域内也展现出独特的行为。 #### 时间延迟特性 对于理想情况下的一阶巴特沃斯低通滤波器而言,当输入信号为单位脉冲δ(t)时,输出y(t)可以表示为指数衰减形式: \[ y(t)=\frac{A}{T}e^{-t/T}, t>0 \] 其中\( T=\frac{1}{2πf_c}\),fc代表截至频率,A取决于具体应用场景下的增益设置。随着阶数增加,实际应用中的多阶巴特沃斯滤波器会引入更多复杂的瞬态过程,但总体上仍保持较为平稳的变化趋势而不发生过冲现象。 #### 群延时特性 群延时定义为相位变化率关于角频率ω的关系,即: \[ τ_g=-\frac{\mathrm dφ(ω)}{\mathrm dω } \] 对于巴特沃斯型LPF来说,尽管在整个工作范围内无法做到恒定不变的理想状态,但在较低频段内能够较好地维持接近常数值的表现,这有助于减少不同频率成分之间相对位置偏移所造成的失真影响。 ```matlab % MATLAB代码用于展示巴特沃斯低通滤波器的时间响应特征 [b,a]=butter(4,0.2); % 创建四阶巴特沃斯低通滤波器对象 impulse(b,a); title('Fourth-order Butterworth Lowpass Filter Impulse Response'); xlabel('Time (samples)'); ylabel('Amplitude'); grid on; ``` 上述MATLAB脚本展示了如何通过`impulse()`函数来观察一个给定参数配置下(此处设定了四个极点)的巴特沃斯低通滤波器对冲击激励作出反应的方式——随着时间推移逐渐趋于稳定的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值