MATLAB常用信号处理函数清单:从FFT到滤波器实战指南
1. 项目概述为什么要单独整理一份信号处理函数清单做信号处理这几年我最大的感受就是MATLAB的功能强大到让人眼花缭乱但真正高频使用的函数翻来覆去就那么几十个。很多初学者最容易犯的毛病是一上来就抱着几百页的文档啃结果真正写代码的时候还是不知道用哪个函数。我自己刚接触这个领域的时候也是如此光一个滤波就纠结了半天到底是该用filter还是filtfilt什么时候该用conv什么时候该用xcorr这些函数的边界条件又是怎么处理的。这份003 常用信号处理函数MATLAB就是我在这个背景下整理出来的一套筛选过的函数集合。它不是简单地把MATLAB文档里的函数抄一遍而是结合了我在实际项目中的使用场景——从传感器数据预处理、振动信号分析到生物电信号滤波再到通信系统的调制解调模拟——把那些真正经过实践检验的、高频复用的函数挑出来配上使用场景说明和典型调用方式。如果你正在学习数字信号处理或者刚接手一个需要做信号分析的项目这套清单可以帮你少走很多弯路。需要说明的是这篇文章不会把全部函数铺开讲那等于又写了一遍文档。我会按照信号处理的工作流来组织内容信号生成与波形构造、时域分析、频域分析、滤波器设计、系统响应与卷积、以及一些实用工具函数。每个函数我都会结合具体的应用场景来说明而不是只贴语法。2. 信号生成与基础波形构造2.1 先生成信号再去谈处理在实际项目中我们很少能拿到现成的标准信号。传感器采回来的数据通常带着噪声有时候还有基线漂移。所以做信号处理的第一步往往是先要在MATLAB里构造一个已知的、干净的信号用来验证算法是否正确。这就是为什么信号生成函数是第一优先级要掌握的。最常用的是sin和cos这两个函数看起来没什么技术含量但实际使用中的细节还是挺多的。比如你要生成一个20Hz的正弦波采样率是200Hz持续1秒钟fs 200; % 采样率 200Hz t (0:fs-1)/fs; % 时间向量 signal sin(2*pi*20*t); % 20Hz正弦波这里的关键是t要向量的构造方式。我用的是(0:fs-1)/fs而不是(1:fs)/fs这是因为采样的起点在0时刻符合物理直觉。如果你用(1:fs)/fs第一个采样点就落在了1/200秒处信号整体会有一个偏移这在某些对相位敏感的分析中会引入微小的误差。除了基本的正弦波chirp函数也经常用到。这个函数生成的是频率随时间线性变化的扫频信号在系统辨识和扬声器测试里很常见t 0:1/1000:2; % 2秒钟采样率1kHz signal chirp(t, 10, 2, 100); % 频率从10Hz线性扫到100Hzchirp函数的调用格式是chirp(t, f0, t1, f1)表示在时间t1处频率达到f1。这个函数在验证滤波器性能时特别好用——你只需要跑一次扫频信号通过滤波器就能大致看出滤波器的幅频响应。我经常拿它来快速确认一个IIR滤波器的截止频率是不是真的落在设计值上。2.2 给真实信号加噪声的两种方式真实环境里的信号几乎不可能没有噪声。在算法验证阶段我们需要在干净信号上叠加已知特性的噪声来评估算法的鲁棒性。这里涉及两个常用函数randn和awgn。randn生成高斯白噪声方差为1。要做出特定信噪比的含噪信号通常的写法是signal_noisy signal 0.1*randn(size(signal)); % 加噪声幅度是信号幅度的约0.1倍但这个写法其实不太严谨因为你没有真正控制信噪比。更专业的做法是用awgn函数signal_noisy awgn(signal, 10, measured);awgn(signal, snr, measured)的含义是先测量signal的功率然后自动计算需要加多少噪声才能达到指定的信噪比这里snr10dB。我用的是带measured参数的版本它会先估算输入信号的功率这比自己手动算噪声功率要靠谱得多。还有一个容易忽略的函数是pulse或者rectpulse在仿真数字通信链路的时候会用到。不过据我的经验基础阶段掌握sin、chirp、randn、awgn这四样就可以覆盖绝大多数场景了。后面在调滤波器的时候你会发现一个可以精确控制参数的信号源有多重要。3. 时域分析核心函数3.1 别急着上频谱先在时域里看清楚很多初学者一上来就做FFT恨不得立刻看到频率成分但时域分析往往是更先应该做的一步。时域里能看到信号的幅度变化、包络趋势、突变点这些信息在频域里反而不直观。时域分析里最常用的函数是findpeaks它用来寻找信号中的峰值。这个函数不是简单地调用max就完事了它支持很多实际项目里必备的参数设定。比如当你处理一段心电信号或者振动信号时有些小的毛刺也满足局部极大的条件但它们不是真正的波峰。这是可以用MinPeakHeight和MinPeakDistance来过滤[pks, locs] findpeaks(signal, MinPeakHeight, 0.5, MinPeakDistance, 50);MinPeakHeight设定最低波峰高度低于它的会被忽略MinPeakDistance设定两个波峰之间的最小采样点数这能避免把同一个波峰附近的波动误检成多个峰值。在实际项目中调这两个参数是一个反复试验的过程——参数设得太大真正的波峰被漏掉设得太小噪声造成的假波峰又会混进来。另一个时域分析的重要函数是envelope用来提取信号的包络。比如你有一个调幅信号想看它的包络变化[up, lo] envelope(signal, 100, peak);envelope的第二个参数是滑动窗口长度第三个参数指定包络算法。peak方法适用于提取峰值包络rms方法则给出RMS包络。在分析轴承振动信号时我常用的操作是对信号做包络谱分析——先提取包络再做FFT这样可以找到高频振动成分的调制频率。3.2 相关性分析xcorr和ycov如果你要判断两段信号之间的相似程度或者要测量一个信号相对于另一个信号的时间延迟就需要用到相关函数。这里的两个关键函数是xcorr和xcov。xcorr计算互相关。假设你有两路麦克风录到的声音想估计声源到达两个麦克风的时间差代码可以这样写[corr, lags] xcorr(signal1, signal2, coeff); [~, max_idx] max(corr); delay lags(max_idx);coeff参数会把互相关结果归一化到[-1, 1]区间方便判断相关性强弱。返回的lags数组告诉你每个相关值对应的延迟样本数所以delay就是两个信号之间的延迟采样点数除以采样率就能换算成时间秒数。时延估计在阵列信号处理中非常常用无论是声源定位还是波束形成都绕不开这一步。xcorr还有一个重要用途是计算自相关这在检测信号的周期性上很有效。一个周期信号的自相关函数会在周期整数倍处出现峰值噪底相对比较均匀。我早期在分析转速信号时就是用自相关来判断信号的旋转周期比直接看波形直观多了。3.3 微分与积分梯度与累积信号处理里经常会用到对信号求导数和积分的操作。MATLAB里求导用gradient积分用cumsum。gradient不同于直接对相邻样本做差它使用了中心差分对中间点和单边差分对边界点精度比diff高deriv gradient(signal) * fs; % 乘以fs得到对时间的导数这里为什么要乘以fs因为gradient是按样本序号来计算的输出的是每个样本的变化量。要换算成每秒的变化量就得除以样本间隔1/fs也就是乘以fs。这个细节很多人容易忽略导致求出来的导数量纲不对。cumsum是累积和本质上是离散积分integrated cumsum(signal) / fs;这里除以fs是把样本间隔考虑进去得到的是时间积分。需要注意的是cumsum和数值积分相比会有累积误差但对于一般性的信号趋势分析精度已经足够。我在分析加速度传感器数据的时候就经常用cumsum把加速度积分为速度再积分为位移整体效果在工程上够用。4. 频域分析FFT相关的完整套路4.1 用一段代码说清FFT的标准流程频域分析是信号处理的重头戏而FFT是绝对的核心。我在很多项目里的经验是FFT本身调用起来很简单但很多人算出来的频谱图不对问题往往出在前面几步的预处理和后面几步的幅值修正上。让我给你一套完整的、可以直接套用的FFT分析模板fs 1000; % 采样率 t (0:999)/fs; % 1000个采样点1秒钟 signal cos(2*pi*50*t) 0.5*randn(size(t)); % 50Hz余弦信号加噪声 N length(signal); % 采样点数 X fft(signal, N); % 做N点FFT freq (0:N-1)*(fs/N); % 频率轴 amplitude abs(X) / (N/2); % 幅值修正 amplitude_single amplitude(1:N/21); % 取单边频谱 freq_single freq(1:N/21); plot(freq_single, amplitude_single); xlabel(频率 (Hz)); ylabel(幅值);这段代码里最关键的一行是amplitude abs(X) / (N/2)。很多人在这一步直接写abs(X)然后发现一个幅值为1的余弦信号在频谱上的峰值竟然是500。这是因为FFT的结果是N个点的复数和单频信号的幅值被分散到了正负频率上要恢复真实的余弦幅值就需要除以N/2。另外我建议尽量用fft(signal, N)而不是fft(signal)即使N等于原信号长度也一样。这样做的意义是让你明确知道自己做了多少点的FFT方便后续做频域插值或补零操作。当你需要更高频率分辨率时直接增加N的值比如补零到4096点即可X fft(signal, 4096); % 补零到4096点频谱更光滑4.2 窗函数为什么直接用fft是不干净的在说到FFT时必须聊一聊窗函数。直接对截断的信号做FFT本质上等于把无限长的信号乘上了一个矩形窗这在频域上会引起能量泄漏——频谱的峰值不再是尖锐的一根线而是会在旁边出现拖尾。MATLAB里常用的窗函数有这么几个hann汉宁窗、hamming哈明窗、blackman布莱克曼窗。它们的主要区别是主瓣宽度和旁瓣衰减的权衡。window hann(N); signal_windowed signal(:) .* window(:); X fft(signal_windowed, N);在使用窗函数时有两点要注意加窗后信号的能量会下降因为窗函数不全是1幅值修正系数要相应调整。在实际中如果你只是做定性的峰值检测可以忽略修正但如果你要做定量分析就需要用窗函数的等效能增益系数来补偿。不同窗函数的旁瓣特性不同hann窗主瓣宽度适中、旁瓣衰减较快是中庸之选blackman窗旁瓣衰减更大但主瓣更宽频率分辨率会变差。对于频率分量相隔较近的信号选hann比选blackman要合适。4.3 频谱图与时频分析specgram和stft对于非平稳信号比如语音、轴承故障信号、脑电信号单纯做整段的FFT会把时间信息完全丢失。你需要的是时频分析——观察频率成分随时间的变化。MATLAB中可以使用stft短时傅里叶变换或经典的spectrogram。[s, f, t] spectrogram(signal, hann(256), 128, 1024, fs);这行代码的含义是用256点汉宁窗对信号分段相邻段之间重叠128点做1024点FFT返回的s是一个复数矩阵f是频率轴t是时间轴。用imagesc(t, f, abs(s))就可以画出时频谱图。在实践经验上窗长256对应的时域分辨率大约是256/fs秒频率分辨率是fs/1024Hz。这两者是互相制约的——窗越长频率分辨率越高但时间分辨率变差。对于突发性的瞬态信号你需要短窗对于稳定的正弦信号长窗更有利。实际项目里我一般先试256点再根据观察效果调整很少一次性就调到最佳参数。5. 滤波器设计与系统响应5.1 掌握filter与filtfilt的关键区别滤波是信号处理的高频需求。MATLAB里最基础的滤波函数是filter和filtfilt。filter实现的是差分方程的递归运算是一个因果系统[b, a] butter(4, 0.2); % 4阶巴特沃斯低通归一化截止频率0.2 y filter(b, a, signal); % 正向滤波filter的一个问题是它会引起相位失真——因为所有IIR滤波器在通带内都有非线性相位特性信号会变形。filtfilt则通过正反两次滤波来消除相位偏移零相位失真的特性使它成为处理生物电信号和离线数据的首选y filtfilt(b, a, signal);filtfilt的使用场景要稍微注意一下。它能做到零相位失真但等效滤波器阶数是原来的一倍对信号的衰减也更大。此外filtfilt是离线处理不适合实时系统。我在实时嵌入式系统上就没办法用filtfilt得老老实实用filter接受相位延迟的影响。5.2 Butterworth、Chebyshev与椭圆滤波器的选型MATLAB里设计滤波器可以直接用butter、cheby1、cheby2、ellip这些函数。它们各有特点我用一个表格来对比滤波器类型通带是否等纹波阻带是否等纹波相同阶数下的过渡带宽度典型使用场景Butterworth平坦平坦较宽一般性滤波偏好平滑幅频响应Chebyshev I型有纹波平坦较窄需要更陡的过渡带且能接受通带纹波Chebyshev II型平坦有纹波较窄不希望通带内有纹波椭圆有纹波有纹波最窄临界需求最窄过渡带换取最低阶数以我的经验80%的场景用巴特沃斯就够了原因很简单它的相位特性虽然非线性但幅频响应在通带内是单调平坦的不会出现等纹波滤波器那种放大某些频带相对更多的问题。只有在滤波器阶数已经很高但仍然无法满足过渡带要求的时候我才会考虑切换到切比雪夫或者椭圆。设计滤波器时的重点在于截止频率的换算。butter(4, 0.2)里的0.2是归一化频率它的定义是截止频率 / (采样率/2)。如果你想要1kHz采样率下的100Hz截止频率那就是100/(1000/2)0.2。这个换算是新手最容易出错的地方。5.3 系统响应impz、stepz、freqz设计完滤波器以后怎么验证设计是否成功这就需要看系统的各种响应了。freqz看频率响应impz看冲激响应stepz看阶跃响应。[h, w] freqz(b, a, 1024, fs); subplot(2,1,1); plot(w, abs(h)); % 幅频响应 subplot(2,1,2); plot(w, angle(h)); % 相频响应这里的w输出是频率轴单位取决于你是否传入fs。传入了fs就是Hz为单位不传就是归一化频率0到π弧度/样本。我用freqz验证滤波器的时候基本都会把fs传进去因为直接看Hz单位的图比心算归一化频率要直观得多。impz在验证FIR滤波器的系数是否把抽头延迟都正确实现时很有用。比如你设计了一个FIR低通通过impz可以看到冲激响应对应每个抽头的权重——如果出现冲激响应不关于中心对称那就可以判断这个滤波器的相位特性不是线性的。6. 卷积和相关理清时域运算的两个方向6.1 conv与deconv卷积与解卷积线性系统理论里输出等于输入与系统冲激响应的卷积。MATLAB里直接用conv就行y conv(signal, h); % h是系统的冲激响应使用conv时要注意输出长度是length(signal) length(h) - 1。如果你希望输出和输入一样长比如模拟在线实时处理那就用conv(signal, h, same)它会裁剪中间部分如果你需要有效数据且避免边界效应可以用valid参数。与conv对应的是deconv做解卷积运算。这个函数在反卷积应用、逆滤波中会用到。我实际用的场景是想要从输出信号和已知的系统响应中估计输入信号[signal_est, r] deconv(y, h);需要提醒的是deconv本质上是个除法运算如果h中有接近0的值结果会非常不稳定。实际项目中我通常会在频域里加一个小的正则化项来做反卷积而不是直接用deconv。6.2 conv与xcorr的异同conv和xcorr的数学关系是xcorr(a, b) conv(a, fliplr(conj(b)))。也就是说互相关其实就是反转并共轭其中一个信号后的卷积。在MATLAB中使用上有一个容易混淆的点xcorr默认会计算所有延迟下的互相关输出长度是2*max_length - 1而conv的输出长度是length(signal) length(h) - 1。两者都有零延时的中心点位置但坐标轴的含义不同。我用xcorr做时延估计时特别注意lags输出因为它是和互相关结果一一对应的延迟轴。这里还有一个经验在实现匹配滤波的时候很多人会直接在频域做乘法来等效卷积但忽略了对信号做翻转。你有没有发现xcorr的实现其实天然包含了匹配滤波的功能这个思路在处理线性调频信号的脉冲压缩时非常有用。7. 其他实用工具函数与排查经验7.1 resample与interpft采样率转换的两种场景在实际项目中不同设备的采样率往往不一致。两块传感器一块是1000Hz采样另一块是500Hz采样它们的信号要放在一起分析就得先统一采样率。这时候用resamplesignal_1000 resample(signal_500, 2, 1); % 从500Hz变为1000Hz两倍上采样resample(p, q)中的p和q是整数比表示上采样p倍、下采样q倍。它内部自带抗混叠低通滤波所以比直接插值要可靠得多。我见过有人用interp或linear插值做重采样结果高频成分混叠得一团糟数据分析全废了。interpft则是另一个用途——它在频域做插值。如果你要对信号做整倍数的时间缩放而不改变频率内容interpft是一个很好的选择。但我觉得它的适用范围相对窄一些普通项目里掌握resample就够用了。7.2 快速傅里叶变换的进阶fftshift与ifftshiftfftshift这个函数看起来很简单但做频谱中心化时很容易搞错方向。标准的FFT输出中频率是从0到fs对应fftshift之后才是-fs/2到fs/2。X fft(signal); X_shifted fftshift(X); freq (-N/2 : N/2-1) * (fs/N);这里要注意的是如果N是偶数一般我们都用2的幂次fftshift的频率轴是(-N/2 : N/2-1) * fs/N。如果把N/2-1写成了N/21画出来的频谱会凭空多出一个频率点而且位置还不对。ifftshift的作用是逆操作在fft之前对时域信号做ifftshift。虽然fft对是否居中不敏感结果只差一个线性相位但你要做频域滤波时最好先把信号的零频移到中心再用ifftshift还原。7.3 实测项目中的几个坑我整理一下本人在实际项目中踩过的坑希望对你有帮助第一个坑是FFT的幅值标定。很多人在做完FFT后直接用abs(X)做频谱图然后发现正弦信号的幅值对不上。正如前面说的单边频谱要除以N/2但这个修正只在信号是纯正弦波时才准确。如果信号含有多个频率成分各成分之间会互相影响修正系数就不严格适用。实际上我一般会先生成一个已知幅度的正弦波测试整个流程验证标定无误后再换真实数据。第二个坑是filter的初始条件。直接调用filter(b, a, signal)时滤波器起始状态默认是0这会导致输出的前几十个样本有一段瞬态响应。如果你的信号具有明显稳态特征而你想要最佳效果可以考虑用filtic来设置合理的初始条件或者直接用filtfilt消除瞬态段。我在分析脑电信号时总觉得前100个样本的滤波结果怪怪的后来发现就是初始条件导致的。第三个坑是零频率分量。做频谱分析时很多人会忽略直流分量0Hz处的幅值。如果信号有一个直流偏置FFT后0Hz处的值会特别大导致其他频段的细节在图上被压缩。我的处理方法是先做detrend(signal)去除信号中的趋势项和直流偏置再做FFT。这样低频段的细节就能清楚地显示出来了。第四个坑是xcorr里信号长度不对称。xcorr(a, b)要求两个信号长度可以不同但输出长度和延迟范围会随之变化。如果你只想要零延迟附近的互相关值用xcorr(a, b, coeff)然后取中间段即可。我一开始没注意这回事取最大值时错把互相关序列的边缘当成了最大点结果算出来的时间延迟差了十万八千里。7.4 常用函数速查参考最后我把自己常用的信号处理函数整理成一份速查表。这份表格不求全但求高频有用类别函数核心用途常用参数信号生成sin/cos正弦/余弦波生成频率时间向量信号生成chirp扫频信号f0, t1, f1信号生成awgn添加高斯白噪声到指定SNRsnr, measured时域分析findpeaks波峰检测MinPeakHeight, MinPeakDistance时域分析xcorr互相关/自相关coeff, lags频域分析fft/ifft快速傅里叶变换与逆变换N点FFT频域分析fftshift频谱中心化配合fft使用频域分析spectrogram/stft时频分析窗长重叠NFFT滤波器设计butter/cheby1/ellip设计IIR滤波器阶数归一化截止频率滤波实现filter/filtfiltIIR/FIR滤波执行b, a, signal卷积相关conv/deconv卷积/解卷积same, valid重采样resample采样率转换p, q预处理detrend去除趋势项和直流可指定分段方式预处理envelope提取信号包络窗长, peak/rms这份表格是我自己常用的一个小抄。你在实际项目里先用这些函数解决大部分问题遇到不常用的需求再回去翻文档效率会高很多。我个人在使用这些函数时最大的体会是信号处理这件事六分靠预处理三分靠算法选型一分靠调参。把detrend、滤波、重采样这些前处理步骤做扎实了后面的FFT和分析能省一半力气。还有一个小技巧在分析任何真实数据之前先用已知参数的仿真信号把整个处理链路跑通。我基本上每一次都是这么做的哪怕是写了无数遍的FFT流程也会先拿一个干净的合成信号验证一下标定系数和频率轴确认无误再上真实数据。这套003 常用信号处理函数MATLAB是我在多个项目里慢慢沉淀下来的希望这份整理能帮你把那些最常用的函数用得顺手一点把那些调试时的坑提前填平。实际用下来我发现自己会反复查阅的还是这份速查表而不是MATLAB的官方文档。它不会教你所有东西但可以让你在处理常见信号时不至于无从下手。

相关新闻

拓扑优化入门:99行与88行程序对比及OC与MMA算法解析

拓扑优化入门:99行与88行程序对比及OC与MMA算法解析

简介:这份资源面向拓扑优化初学者与结构优化方向的学生、研究人员,提供一套可直接运行的MATLAB入门程序,涵盖优化准则法(OC)与移动渐近线法(MMA)两种主流求解思路,帮助读者理解如何在…

2026/10/15 17:18:28 阅读更多 →
Agent Skills 标准实战:用 SKILL.md 让 AI Agent 真正学会干活

Agent Skills 标准实战:用 SKILL.md 让 AI Agent 真正学会干活

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 17:18:28 阅读更多 →
开题报告写到崩溃?这份“保姆级”通关攻略请收好

开题报告写到崩溃?这份“保姆级”通关攻略请收好

每到毕业季,无数本科生的第一道坎往往不是毕业论文答辩,而是开题报告。选题不知道从哪下手,研究思路理不清,格式改了又改还是被导师打回重写,不少同学一提到“开题报告”四个字就头皮发麻。其实,过来人都清…

2026/10/15 17:18:28 阅读更多 →

最新新闻

MFC Tab Control 标签切换实战:子页面管理与消息响应全解析

MFC Tab Control 标签切换实战:子页面管理与消息响应全解析

简介:一套基于MFC对话框的TabControl标签切换示例工程,面向需要实现多页面动态切换的Windows桌面应用开发者。压缩包共39个文件,包含7个C头文件、5个源程序文件,以及Visual Studio工程文件、资源脚本、可执行程序与调试符号等&…

2026/10/15 18:10:22 阅读更多 →
Git定时自动备份:从脚本设计到定时任务的全攻略

Git定时自动备份:从脚本设计到定时任务的全攻略

“git定时自动备份”这件事,说大不大,说小也不小。我见过太多项目栽在“忘了备份”这四个字上——本地硬盘突然坏掉,或者误删了分支还傻乎乎地接着写,等回过神来才发现唯一一份代码已经躺在了回收站里。如果你也经历过这种“两眼一…

2026/10/15 18:10:22 阅读更多 →
测试开发面试题全解析:从接口测试到算法题的标准答题框架

测试开发面试题全解析:从接口测试到算法题的标准答题框架

简介:阿里巴巴数字马力测试开发工程师面试题详解是一份面向软件测试、测试开发岗位求职者的面试题库,聚焦数字马力及阿里系技术面试常见场景。题目按基础、自动化、性能、测试开发、阿里场景、支付专项等模块展开,覆盖Python编程、排序算法、…

2026/10/15 18:10:22 阅读更多 →
异步FIFO设计详解:跨时钟域、格雷码与空满判断实践

异步FIFO设计详解:跨时钟域、格雷码与空满判断实践

1. 从跨时钟域说起:为什么绕不开异步FIFO做过数字IC或FPGA开发的工程师,迟早都会撞上跨时钟域处理这堵墙。两个时钟域之间要传数据,最直接的办法是用握手协议——请求、应答、再请求,简单可靠但吞吐量上不去,每次传输都…

2026/10/15 18:10:22 阅读更多 →
PyTorch计算图深度解析:从显存泄漏到梯度优化的实战指南

PyTorch计算图深度解析:从显存泄漏到梯度优化的实战指南

1. 从一次显存泄漏说起:为什么必须搞懂计算图刚接触PyTorch那会儿,我写过一个看起来毫无问题的训练循环:每个batch前向传播、算loss、反向传播、更新参数,然后进入下一轮。代码跑起来loss确实在降,但显存占用却像爬楼梯…

2026/10/15 18:10:22 阅读更多 →
PyQt5平移动画实战:从QPropertyAnimation到性能优化

PyQt5平移动画实战:从QPropertyAnimation到性能优化

直接开始正文。1. 先搞清楚一件事:PyQt5里实现平移动画,你到底有几种选择我在群里经常看到有人问“PyQt5怎么做平移动画”,结果下面回复五花八门,有说用QTimer循环改坐标的,有说直接上QPropertyAnimation的&#xff0c…

2026/10/15 18:09:21 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →