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

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');是以原来的模式读取,原来是大端就是大端,原来是小端就是小端。




  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值