如何填补丢失的频率响应数据的开始和结束?
12个视图(30天)
显示旧的评论
fillmissing interp1工作的差距的一个数组,但是我找不到任何适用于填充缺失数据的开始和结束。看起来曲线拟合工具箱可能会这样做,但我有搜索,找不到任何的例子,有人填补缺失数据的开始和结束。
频率响应数据的问题:一些我从音频分析仪不包括所有箱子从0赫兹到奈奎斯特频率。
解决方案:我找到了最好的解决方案是大小估计0赫兹,然后使用fillmissing之间的数据。结果并不好。我可以很容易地做一个更好的估计就半径标注我的眼睛。
这里有一个例子fillmissing被用来填补0-10Hz和20-48kHz之间的数据。我已经试了所有的方法(花键等)和提供更糟的结果。谢谢你任何建议! !
S_TF = fillmissing (S_TF,“线性”,“EndValues”,“extrap”);
接受的答案
马修•诺伊
2022年6月28日
内森
正如上面说的,这里的完整代码:
% % playgroundFillGaps
clc;明确;接近;格式紧凑的;格式短g;
newFs = 96000;对于那些= newFs / 2;
%加载数据
TF = readmatrix (“k3 - 110 - 0.99 - m - nr2.txt”,“NumHeaderLines”9);%{“频率”、“大小”、“阶段”,“一致性”};
频率=特遣部队(:1);
mag_dB =特遣部队(:,2);
phas_deg =特遣部队(:3);
相干=特遣部队(:1);
%以下数据只保留Fs / 2频率
印第安纳州=(频率< = newFs / 2);
频率=频率(印第安纳州);
mag_dB = mag_dB(印第安纳州);
phas_deg = phas_deg(印第安纳州);
相干=一致性(印第安纳州);
%添加虚拟直流值(复制第一个可用的数据)
频率= [0;频率);
mag_dB = [mag_dB (1);mag_dB];
phas_deg = [phas_deg (1);phas_deg];
相干=[相干(1);连贯性);
% =让两端自然行为
%高通滤波器和低频率的行为结束(低于20 Hz)
%在高频率的低通滤波器等行为结束(20 kHz以上)
% =巴特沃斯带通滤波器应用频率窗口
f_low = 20;%降低切断频率赫兹
f_high = 20 e3;%切断高频率赫兹
N_bpf = 2;%过滤器订单
[b] =黄油(N_bpf 2 / newFs * [f_low f_high]);
frf_filter = freqz (b, a,频率,newFs);
频= 10 ^ (mag_dB / 20)。* exp (j *π/ 180 * phas_deg);%初始频
frf_filtered =润扬悬索桥。* frf_filter;%,复杂的初始误差+带通频窗口
% %的阴谋
图(1)
次要情节(2,1,1),semilogx (mag_dB频率,频率,20 * log10 (abs (frf_filtered)))
次要情节(2,1,2),semilogx (phas_deg频率,频率,180 /π*角(frf_filtered))
% % fft方法
频= frf_filtered;
%创建fliiped负频率误差数据(conjuguate)
如果国防部(长度(降维),2)= = 0% iseven
frf_sym =连词(润扬悬索桥(结束:1:2));
其他的
frf_sym =连词(润扬悬索桥(end-1: 1:2));
结束
冷杉=实际(传输线([降维;frf_sym]));%,正面和负面的频率误差转化为红外
%冷杉=冷杉(1:1);%截断是可能的如果冷杉衰变足够
frfid = freqz(杉木、1频率newFs);
% %的阴谋
图(2)
次要情节(311),图(0,0,1:长度(杉木),冷杉);
传奇(没有数据的,“确认冷杉模型(fft)”);
包含(“样本”);
ylabel (“振幅”);
次要情节(312),semilogx(频率,20 * log10 (abs(降维)),频率,20 * log10 (abs (frfid)));
ylim([马克斯(mag_dB) -80 max (mag_dB) + 10]);
传奇(输入模型的,“确认冷杉模型(fft)”);
包含(的频率(赫兹));
ylabel (“降模量(dB)”);
次要情节(313),semilogx(频率、180 /π*角(降维),频率,180 /π*角(frfid));
传奇(输入模型的,“确认冷杉模型(fft)”);
包含(的频率(赫兹));
ylabel (“润扬悬索桥角(°)”);