当前位置: 首页 > news >正文

多功能电法工作站的实时硬件算法【附程序】

✨ 长期致力于谐波陷波器、数据处理、算法、标定、测试研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1资源优化的降采样滤波器与谐波陷波器硬件设计针对多功能电法工作站需要同时处理多种电磁观测方法CSAMT、MT、IP等的宽带信号在FPGA上实现一种级联积分梳状滤波器与FIR谐波陷波器组合的数字滤波结构。CIC滤波器实现4-32倍可编程降采样抽取率由用户通过寄存器配置其传递函数为H(z)((1-z^{-RM})/(1-z^{-1}))^N其中R4M1N4。为补偿CIC通带衰减在后级串联一个反sinc补偿FIR滤波器阶数31。谐波陷波器采用一种新型的频率采样结构能够同时抑制基频50Hz及其奇次谐波150、250、350…陷波深度大于60dB。其设计原理在单位圆上均匀设置N个采样点将需要陷波的频率点处的频率响应置零然后通过IDFT得到FIR系数。该陷波器仅需51个系数相比于经典双二阶级联结构节省了40%的乘法器资源。在Xilinx Artix-7 FPGA上实现占用DSP48单元仅12个处理延时小于5μs。2时间域激发极化法高精度二次电压衰减曲线提取针对IP法中接收到的极化电位包含一次场干扰和慢衰减二次场提出一种基于精确时间同步的同步采样与指数拟合提取算法。首先利用GPS秒脉冲同步发射机与接收机时钟发射机按照占空比1:1发送周期性方波电流周期2s采样率1kHz。接收端采集到混合信号后采用自适应相关检测法提取每个半周期内的二次电压序列。具体做法将每个周期的前100ms作为一次场稳定区后900ms作为二次场衰减区对衰减区电压取对数后进行分段线性回归将衰减曲线分解为快衰减分量时间常数τ1≈0.2s和慢衰减分量τ2≈2s。然后通过外推得到关断瞬间的初始二次电压值进而计算视极化率。在野外试验中本方法测得的二次电压信噪比达到28dB比传统固定窗口法提高了9dB极化率测量重复性误差从3.2%降至0.9%。3无同步电流的复电阻率法与PRBS宽频信号发生器测试为实现不需要发射电流同步记录的复电阻率测量提出一种基于全相位频谱分析和频率-相位表的算法。接收端采集大地响应信号后先进行全相位FFT预处理窗长度1024重叠率50%提取各频率点的相位信息。由于发射电流波形已知伪随机二进制序列或方波通过离线构建频率-相位查找表将实测相位与查找表对比即可反演出视电阻率和相位差。该方法消除了对同步电流记录仪的依赖简化了野外装备。同时为在实验室测试MT/AMT模块设计了一种基于PRBS的宽频信号发生器。PRBS序列阶数选择10周期1023时钟频率5MHz输出频谱覆盖0.5Hz-2.5MHz。信号发生器采用DDSPRBS组合方案输出信号功率平坦度在带宽内优于±1.5dB。利用该信号发生器对MT模块进行标定与天然场源测试结果对比阻抗估计值的偏差小于5%。最后通过室内标定和野外试验验证了谐波陷波器和各数据处理算法的有效性标定信号的检测精度达到0.1μV。import numpy as np from scipy import signal from scipy.fft import fft, ifft def cic_decimator(x, R4, M1, N4): # 简化CIC滤波器积分器梳状器 y np.zeros(len(x)//R) # 积分器 integrator 0 for i in range(len(x)): integrator x[i] if i % R 0: # 梳状器 comb integrator - (integrator if iR else y[i//R - 1]) y[i//R] comb return y def harmonic_notch_filter(fs1000, notch_freqs[50,150,250,350,450], N51): # 频率采样法设计陷波器 freqs np.fft.fftfreq(N, d1/fs) H np.ones(N, dtypecomplex) for f_notch in notch_freqs: idx np.argmin(np.abs(freqs - f_notch)) H[idx] 0 H[N-idx] 0 h np.real(ifft(H)) # 加窗 h h * np.hamming(N) return h / np.sum(h) def full_phase_fft(signal, window_len1024, overlap0.5): # 全相位预处理 step int(window_len * (1-overlap)) n_segments (len(signal) - window_len) // step 1 spectra [] for i in range(n_segments): seg signal[i*step : i*stepwindow_len] # 加窗 seg seg * np.hanning(window_len) # 全相位前后各取一半拼接 ap_seg np.concatenate([seg[window_len//2:], seg[:window_len//2]]) spec fft(ap_seg) spectra.append(spec[:window_len//2]) return np.mean(spectra, axis0) def prbs_generator(order10, clock_MHz5, length1023): # 伪随机二进制序列生成 reg np.ones(order, dtypeint) seq [] for _ in range(length): feedback reg[-1] ^ reg[-3] # 本原多项式 x^10 x^3 1 seq.append(reg[-1]) reg np.roll(reg, 1) reg[0] feedback # 升采样到时钟频率 t np.arange(length * 10) / (clock_MHz * 1e6) prbs_up np.repeat(seq, 10) return t, prbs_up def ip_extraction(data, period_samples2000): # 激发极化法二次电压提取 n_periods len(data) // period_samples v_secondary [] for i in range(n_periods): period data[i*period_samples:(i1)*period_samples] # 一次场稳定区前100个点 primary np.mean(period[:100]) # 二次场衰减区100-1800点 decay period[100:1900] - primary log_decay np.log(np.abs(decay) 1e-10) # 线性拟合 x np.arange(len(decay)) coeff np.polyfit(x[:500], log_decay[:500], 1) # 快衰减 tau1 -1/coeff[0] if coeff[0]!0 else 100 v0 np.exp(coeff[1]) # 初始二次电压 v_secondary.append(v0) return np.array(v_secondary) # 标定相关检测 def correlation_calibration(signal, reference, fs): corr np.correlate(signal, reference, modefull) peak np.argmax(corr) delay peak / fs amplitude np.max(corr) / np.sum(reference**2) return delay, amplitude if __name__ __main__: fs 1000 notch_coeff harmonic_notch_filter(fs) print(陷波器系数长度:, len(notch_coeff)) # 生成测试信号 t np.linspace(0, 10, 10*fs) test_signal np.sin(2*np.pi*50*t) 0.5*np.sin(2*np.pi*150*t) filtered signal.lfilter(notch_coeff, 1, test_signal) print(滤波后50Hz衰减:, 20*np.log10(np.std(filtered)/np.std(test_signal)), dB)
http://www.zskr.cn/news/1359325.html

相关文章:

  • 谷歌收录排名怎么做比较好?小白必看,避开4个降权大坑
  • 函数的递归调用
  • 3分钟快速上手:用ComfyUI-MimicMotionWrapper实现专业级AI动作迁移
  • [特殊字符] ChainMem(链忆)— 让 AI Agent 拥有像人一样的联想式回忆
  • 3分钟快速指南:如何使用Forza Painter将任何图片变成《极限竞速》专业涂装
  • 3.git
  • 一个报警器内部结构
  • Java 实现插入和删除 Excel 行和列
  • 谷歌收录排名怎么做比较好?每天花10分钟,收录率轻松提升80%
  • 饥荒联机版下载教程:手机+PC双端 v728321 免安装中文版
  • Midjourney企业版部署避坑清单:97%团队踩过的5大权限/版权/数据泄露雷区
  • 每日 AI 研究简报 · 2026-05-22
  • 合肥生成式引擎优化哪家强?本地服务商深度解析 - 行业深度观察C
  • 通过curl命令直接调用Taotoken大模型API的快速排错指南
  • SleeperX:5分钟掌握macOS高效智能睡眠管理,告别电源焦虑
  • Total War模组制作终极指南:5分钟快速上手RPFM编辑器
  • 用AI写Python的正确姿势——10 个实测有效的提示词模板
  • 阿里云代理, 阿里云全国授权服务商 - 速递信息
  • 如何用嘎嘎降AI处理土木工程论文:土木工程研究生毕业论文降AI4.8元完整操作教程
  • 嘎嘎降AI和率零深度对比:2026年同为低价工具效果差距完整评测报告
  • 2026年5月帝舵官方售后维修保养服务测评报告全维度解析 - 速递信息
  • 抖音视频怎么保存到手机?抖音视频怎么保存到相册?2026年5种实测方法,有手就会 - 科技大爆炸
  • 高效、灵活、精确的导热测量仪器——炎怀科技瞬态平面热源法导热仪,导热系数测量仪器的高效之选
  • 洛雪音乐音源完全指南:如何构建你的专属高品质音乐库
  • AI浓度并非越高越好!文旅与文娱圆桌分享实战案例及增长建议
  • AI进入产业前线:未来稀缺人才是谁?企业人机分工边界咋划定?
  • 从游戏开发到实时排行榜:聊聊线段树(Segment Tree)在Python里的那些‘高级’玩法
  • 如何快速掌握Chrome DevTools Protocol:完整安装与使用指南
  • Lovable开发进入倒计时:iOS 18 Android U对情感化API的强制新规解读(含迁移路线图)
  • AI Agent自动填单、审批、回执、重试——但你敢让它点击“确认付款”吗?(金融级操作闭环设计详解)