OFDM+QPSK信道估计全流程:从LS/LMMSE到深度学习的Matlab实现
每次看到“OFDM QPSK 信道估计”这个组合不用猜八成是要在 Matlab 里搭一条完整收发链路先把 LS、MMSE、LMMSE 跑通再用深度学习做一个估计器最后画几条误码率曲线证明“深度学习方法更有效”。这个题目听起来不复杂真正动手做起来反直觉的地方比想象中多得多。我去年把这条链路从头到尾完整走了一遍包括信道模型怎么定、导频怎么插、LMMSE 的自相关矩阵怎么生成、DNN 输入为什么选 LS 粗估计而不是原始接收信号、训练数据怎么标定以及 BER 曲线背后的那些“明明结果对但总感觉哪里不对”的小细节。这篇就当作一次完整复盘适合正在复现这篇题目思路的同学也适合想快速对比传统估计器和深度学习方法差距的入门研究者。1. OFDMQPSK这条链路里信道估计到底卡在哪个环节1.1 你收到的信号并不是“发什么就收什么”OFDM 做的事情是把一串想要发送的频域符号放到很多子载波上然后用 IFFT 变成时域波形发出去。接收端再做 FFT把时域波形还原成频域符号。听起来像是一个“无损封装”的过程但无线信道不会配合你。多径传播会让同一个符号沿着不同延迟到达接收机不同路径之间相互叠加反映到频域上就是每个子载波被乘上了一个复数信道增益同时再加上了噪声。用公式表示就是Y(k) H(k) X(k) W(k)其中 k 是子载波索引H(k) 是复信道系数W(k) 是噪声。QPSK 解调本来对相位非常敏感而 H(k) 会让星座点发生旋转和缩放所以接收端必须先估计出 H(k)再把接收信号除以这个估计值也就是做均衡才能恢复出发送符号。这条链路的核心问题就是怎么在导频有限、噪声存在的情况下把 H(k) 估得尽量准。1.2 为什么仿真都喜欢选 QPSK 而不是 16QAM 或 64QAM一个很现实的原因是QPSK 星座点模值固定每个复符号的幅度都一样。这看起来是个很普通的细节但它会直接影响后面的估计算法复杂度。比如 LMMSE 公式里有一个常数 β它的定义是β E{|X(k)|²} · E{1/|X(k)|²}对 QPSK 来说所有星座点模值都相同β 1LMMSE 会退化成非常简洁的形式。如果换成 16QAM星座点幅度有 3 种β 不再是 1公式里就要多算一个系数。很多课程设计和论文用 QPSK不是因为 QPSK 性能好而是因为它能让算法对比的焦点放在信道估计本身而不是星座图带来的额外复杂性。1.3 链路里的算法分工要先理清楚信道估计和均衡是两件事但经常被混在一起说。信道估计解决的是H(k) 是多少均衡解决的是拿到 H(k) 的估计值之后怎么把 X(k) 还原出来LS、MMSE、LMMSE 都是信道估计算法它们输出的是一个信道矩阵估计值。均衡可以用 ZF也可以用 MMSE这是个相对独立的模块。我这套仿真里为了公平对比所有估计器后面都用同一个 MMSE 均衡器eq(k) conj(H_est(k)) / (|H_est(k)|² N0)如果信道估计误差大均衡器再优化也救不回来反过来信道估计很准但均衡器放大噪声BER 一样会崩。所以仿真时要有一个“理想信道估计”的对照组这样才能看出性能损失到底是估计带来的还是均衡带来的。2. LS、MMSE、LMMSE三种经典估计器为什么按这个顺序实现2.1 LS估计简单到像“除法”但也不完全是除法LS 估计的思路非常直观在导频子载波上发送符号是已知的那么接收信号除以这个已知符号就能得到该位置的频域信道响应。H_LS(p) Y_p / X_p如果把导频符号功率归一化到 1除法可以直接变成乘以导频符号的共轭。Matlab 里写起来就是H_ls_pilot rxGrid(pilotIdx) ./ pilotSym;问题在于导频只占了部分子载波数据子载波上还得靠插值。我的仿真里 FFT 点数是 64导频每隔 4 个子载波插一个导频数 16剩下的 48 个子载波都是数据。从 16 个导频位置的 LS 估计插值到 64 个子载波用线性插值就能得到一个完整的 H_LSH_ls interp1(pilotIdx, H_ls_pilot, (1:Nfft), linear, extrap);LS 的优点是几乎不需要信道统计信息缺点也明显噪声被原样保留在估计里。导频处信噪比越低LS 估计越抖导频间隔如果太大插值还会带来额外误差。2.2 MMSE用信道相关性把噪声“平均掉”既然 LS 估计噪声大那能不能利用信道本身的统计规律来修一修可以。M MSE 估计的思路是已知导频处的 LS 估计以及信道在频域上的自相关矩阵找一个线性变换使得估计结果与真实信道之间的均方误差最小。H_MMSE R_HH · (R_HH (N0 / Es) · I)^(-1) · H_LS_pilot其中 R_HH 是导频位置之间的信道频域自相关矩阵它是从多径信道的功率延迟谱算出来的。延迟为 τ 的一条路径在频域相隔 Δk 的两个子载波上会产生 exp(-j·2π·Δk·τ/Nfft) 的相关性。路径功率越大相关性贡献越大。把所有路径的贡献加起来就得到整个矩阵。这个矩阵对性能和复杂度的影响非常大。它需要知道信道的功率延迟谱也就是信道路径的数目、延迟和平均功率。如果这些信息不准确MMSE 的性能优势会明显缩水。复杂度方面每个 OFDM 符号都要做一次 Np × Np 的矩阵求逆和矩阵乘法Np 是导频数。在 64 子载波的小仿真里无所谓子载波数到 1024、2048 之后这个复杂度就很难承受。2.3 LMMSE把“严格最优”变成“工程可用”严格意义上的 MMSE 公式里噪声项其实应该是 N0 · (XX^H)^(-1)也就是说它依赖当前发送符号的星座结构。导频符号如果每个能量都固定那这项可以写成常数。LMMSE 做的就是这件事用 β/SNR 代替原来的符号相关项把矩阵表达式变成一个和具体发送符号无关的形式。对 QPSKβ 1LMMSE 和 MMSE 在实际计算结果上几乎一样但在代码实现上LMMSE 更偏工程化。仿真里可以这么写H_LMMSE R_cross · (R_pilot (N0/Es)·I)^(-1) · H_LS_pilot这里的 R_pilot 是导频位置自相关矩阵R_cross 是所有子载波和导频位置之间的互相关矩阵。直接用第一次生成的频域自相关矩阵取下标就可以不需要重复求相关。优点是基于统计先验能显著压低噪声缺点是需要信道相关矩阵这是“看起来不需要导频外额外开销、实际等于默认你知道信道延迟功率谱”的一种假设。三种经典方法放到一张表里看差异很清楚估计算法额外依赖信息实现复杂度性能特点LS只需要导频符号低噪声残留大插值误差明显MMSE需要信道相关矩阵和噪声方差高需要矩阵求逆线性最优性能明显好于 LSLMMSE需要信道相关矩阵β 可约定中等适合 QPSK与 MMSE 接近实现更简洁3. 深度学习估计器不学原始信号先学LS估计的“残差”3.1 为什么输入用LS估计结果而不是直接输入接收信号一开始我按很多论文的思路尝试把接收信号实部虚部直接输入网络期待网络自己学会信道估计和均衡。试过之后效果并不好原因也很简单直接输入受数据符号调制影响的接收信号网络需要同时处理未知数据、导频结构、信道相位和噪声这个问题太大、太不唯一了。后来换了个思路先用 LS 得到导频位置的粗估计再插值成完整频带上的“含噪信道图”把网络当成一个去噪和超分辨模块。这和图像处理里先做双线性插值再做 CNN 去噪非常像。多径信道在频域上存在相干性相邻子载波之间信道不是完全独立的深度学习能利用这种结构去恢复被噪声破坏的细节而 LMMSE 只能利用线性相关。输入和输出的设计就很清晰了输入LS 插值后的完整频带信道估计拆成实部和虚部拼接成一个 2Nfft 维向量输出理想信道的实部和虚部拼接向量标签仿真时生成的真实信道 H_true3.2 网络结构不需要很大全连接就够了很多初学者一上来就套 CNN、Transformer把模型搞得很重。但这个任务的输入是一个一维复向量子载波之间的局部相关性用两层全连接就能拟合得很好。我的网络结构是layers [ featureInputLayer(2*Nfft, Normalization, zscore) fullyConnectedLayer(128) reluLayer fullyConnectedLayer(256) reluLayer fullyConnectedLayer(256) reluLayer fullyConnectedLayer(128) reluLayer fullyConnectedLayer(2*Nfft) regressionLayer ];中间隐藏层没有用 dropout因为训练数据本身是带噪声的随机信道生成器会天然提供正则化。如果发现训练损失和验证损失差距大再补一层dropoutLayer(0.2)就行。全连接网络训练快推理也就是几次矩阵乘法在误码率仿真主循环里反复调用完全扛得住。3.3 训练数据必须覆盖混合信噪比这是整套方案里最容易“看起来对但完全错”的地方。我第一版只用 10 dB 单一信噪比生成训练数据结果 20 dB 测试时网络输出明显偏“软”BER 不降反升。原因是网络只见过 10 dB 的噪声特征看到更干净的输入反而不认识了。所以训练时每个样本的 SNR 要随机从 0 dB 到 25 dB 之间抽取。这样网络学到的不是一个特定噪声强度的映射而是“从含噪 LS 到真实信道”的一般性去噪映射。测试时无论 SNR 落在哪个位置输入特征分布都在训练范围内。训练样本构造流程如下for idx 1:numTrainSamples snrTrain randi([0, 25]); [H_true, H_ls_interp] generateOneSample(Nfft, snrTrain); X(:, idx) [real(H_ls_interp); imag(H_ls_interp)]; Y(:, idx) [real(H_true); imag(H_true)]; end options trainingOptions(adam, ... MaxEpochs, 300, ... MiniBatchSize, 64, ... ValidationData, {Xval, Yval}, ... Plots, training-progress, ... Verbose, false); net trainNetwork(X, Y, layers, options);训练集和验证集都用完全独立的随机信道生成验证集不参与训练。这个“训练集和测试集是否同源”的问题比网络结构本身更容易让最终结果失真很多人在这里翻车。4. Matlab仿真工程从帧结构到BER曲线的一次完整搭建4.1 仿真参数先固定好后面才不会被数据扰动我把核心参数列出来这些参数决定了系统行为和 BER 曲线的走向参数取值说明调制方式QPSK每个复符号 2 bitFFT 点数64子载波总数循环前缀长度16大于最大信道时延避免符号间干扰导频间隔4每隔 4 个子载波放置一个导频导频数量16占总子载波 25%数据子载波48剩余 48 个子载波传输数据信道抽头延迟0, 1, 3, 5 个采样点频率选择性信道抽头平均功率0, -3, -6, -9 dB指数衰减型功率延迟谱蒙特卡洛次数10000每个信噪比下独立生成至少 10000 个 OFDM 符号信道要归一化让所有抽头总功率等于 1h sqrt(10.^(pdp/10)) .* (randn(1,4) 1j*randn(1,4))/sqrt(2); h h / sqrt(sum(abs(h).^2));不归一化的话同样的 SNR 定义下接收信号功率会随随机信道变化BER 曲线上下震荡得很厉害。4.2 主循环代码的主体结构发送端每轮随机生成数据比特映射成 QPSK 符号导频位置放固定导频IFFT 加 CP 后过信道再加高斯白噪声for snr snrList for mc 1:numMC bits randi([0 1], length(dataIdx)*2, 1); dataSym qpskMod(bits); txGrid zeros(Nfft, 1); txGrid(dataIdx) dataSym; txGrid(pilotIdx) (11j)/sqrt(2); tx ifft(txGrid, Nfft); tx [tx(end-Ncp1:end); tx]; rx filter(h, 1, tx); rx rx sqrt(10^(-snr/10)/2) * (randn(size(rx)) 1j*randn(size(rx))); rxGrid fft(rx(Ncp1:end), Nfft); % 信道估计 H_ls_pilot rxGrid(pilotIdx) ./ pilotSym; H_ls interp1(pilotIdx, H_ls_pilot, 1:Nfft, linear, extrap); H_lmmse lmmseEstimate(H_ls_pilot, ...); H_dnn predict(net, [real(H_ls).; imag(H_ls).]); % MMSE均衡 No 10^(-snr/10); eqDnn conj(H_dnn) ./ (abs(H_dnn).^2 No); rxData rxGrid(dataIdx) .* eqDnn(dataIdx); rxBits qpskDemod(rxData); errorCount errorCount sum(rxBits ~ bits); end ber errorCount / (numMC * length(bits)); end这里我没有直接用awgn函数因为awgn默认认为输入信号功率是“measured”也就是会实时测量时域信号功率再来配噪声。如果信道归一化做得不严格SNR 的实际含义会漂移。直接按理论 N0 生成高斯白噪声更稳。4.3 LMMSE 相关矩阵的构造方式LMMSE 最核心的代码是频域自相关矩阵。假设抽头延迟为 delays单位是采样点抽头线性功率为 p,则两个子载波 i 和 j 之间的信道相关性为R(i,j) sum over paths of p_path · exp(-j·2π·(i-j)·delay_path/Nfft)在 Matlab 里可以这样生成function R channelCorrMatrix(Nfft, delays, pdpLinear) R zeros(Nfft, Nfft); for i 1:Nfft for j 1:Nfft diff_idx i - j; R(i, j) sum(pdpLinear .* exp(-1j * 2 * pi * diff_idx * delays / Nfft)); end end end然后取导频位置和全频带位置的下标R_all channelCorrMatrix(Nfft, delays, pdpLinear); R_pilot R_all(pilotIdx, pilotIdx); R_cross R_all(:, pilotIdx); H_lmmse R_cross * ((R_pilot No/Es * eye(length(pilotIdx))) \ H_ls_pilot);注意这里用的是“理想信道相关矩阵”它不含噪声只由多径功率延迟谱决定。仿真中我们是人为设定信道模型的所以相关矩阵可以准确算出来这相当于给了 MMSE/LMMSE 一个公平的先验。如果实际信道里多径结构未知这个优势就不存在了。5. BER曲线结果与那些容易“看起来对但实际错”的坑5.1 我在这套参数下观察到的性能趋势训练完成后在同样的独立测试信道上比较 LS、LMMSE、DNN 和理想信道估计四条 BER 曲线。我的结果里LS 插值方法在低信噪比下表现最差因为噪声和插值误差叠加在一起。LMMSE 有明显提升因为相关矩阵能进一步滤掉噪声。DNN 在大部分信噪比下都优于 LMMSE特别是在 0 dB 到 12 dB 这段区间直观上大约能带来 2 dB 左右的增益。随着 SNR 升高所有方法的绝对误差都变小曲线逐渐靠拢理想信道估计和 DNN 的差距通常能控制在 1 dB 以内。这个趋势符合直觉DNN 训练目标就是学习“从含噪 LS 到真实信道”的映射它不只是线性组合还能利用多径信道的结构信息在低信噪比时相当于做了一个更强的去噪器。高信噪比时 LS 本身已经比较准DNN 的改进空间自然变小。5.2 训练与测试信噪比不匹配是深度学习信道估计最大的坑我前面提过单一 SNR 训练会翻车这里再强调一下。用 0 dB 训练的数据网络学会的其实是“把周围一切可疑波动都平均掉”拿到 25 dB 的高信噪比输入后它会不分青红皂白把真实信道细节也抹掉。反过来用 25 dB 训练网络只会做微小修正拿到 0 dB 输入时完全不知道该怎么降噪。一个比较实用的做法是让训练 SNR 覆盖测试范围并保持分布密度一致。如果你的目标是看 0~25 dB 的 BER 曲线那训练 SNR 就从 0~25 dB 均匀随机取。如果想要网络在某个重点 SNR 附近表现更好可以对那个 SNR 附近做 2 倍过采样但不能只训该点。5.3 三个容易出错的小问题SNR定义、信道归一化、比特统计第一SNR 定义。标题里说“误码率仿真”如果你画的是 BER vs Eb/N0那 Es/N0 Eb/N0 3 dBQPSK 下每个符号两个比特。我在仿真里用的是 Es/N0所以代码里 N0 10^(-snr/10)。如果混用BER 曲线整体会平移 3 dB三个算法之间的相对差距倒是不变但和理论曲线对比时会非常难看。第二信道归一化。多条路径平均功率相加如果不等于 1接收信号的平均功率就不是 1噪声功率按 Es/N0 加进去之后实际 SNR 就和名义 SNR 不一致。最直接的验证方法是在某个固定 SNR 下加一个理想信道估计基线如果理想 BER 能贴合理论 QPSK BER那 SNR 标定基本就没问题。第三比特统计。一个 QPSK 符号是两个 bitBER 应该是“错误 bit 数 / 总 bit 数”不是“错误符号数 / 总符号数”。如果符号判决错了但两位 bit 中只有一位错按符号统计就会少算一半错误。很多人在最后算出来 BER 偏低就是这个原因。5.4 想继续扩展的话后续可以做这几个方向这套链路跑通之后近一步的空间还很大。比如把单天线 OFDM 换成 MIMO-OFDM输入从一维信道向量变成二维信道矩阵DNN 可以改用 CNN也可以把线性插值这一步去掉让网络直接吃导频位置的 LS 估计输出全频带信道这样能同时学习插值和去噪如果信道是时变的还能把相邻 OFDM 符号按时间维组织起来用 LSTM 或简易 Transformer 捕捉时间相关性。但我的建议是项目初期不要急着换大模型。先把 LS、LMMSE、DNN 三者之间的差距、训练数据的影响、SNR 标定的问题搞清楚比刷高几个点的性能重要得多。我自己在这个项目里后期改动最多的不是网络结构而是数据生成和 SNR 定义这些细节稳定之后所有算法对比才会真正有意义。

相关新闻

OpenResponses API实战:构建多渠道统一智能响应服务

OpenResponses API实战:构建多渠道统一智能响应服务

1. 项目整体拆解:为什么叫“人人养虾”前阵子在社区里看到一个叫“OpenClaw人人养虾”的项目,光看名字还以为是什么农业自动化,点进去才发现是一套面向个人开发者和极客的开放响应服务基础设施。项目的核心是OpenResponses API——一个把“消…

2026/10/19 5:06:10 阅读更多 →
140万行网络流量数据集:从特征工程到入侵检测建模

140万行网络流量数据集:从特征工程到入侵检测建模

前阵子有个准备做毕业设计的同学跑来找我,问能不能找一份既能跑机器学习、又贴近真实安全场景的数据集。他手里捏着几个公开的通用数据集,训练出来的模型在作业里效果不错,但一到分析“攻击流量”就露怯——类别失衡严重、特征维度单薄、正负…

2026/10/19 5:06:10 阅读更多 →
蓝鸟项目叫停启示:仓储AMR的验证与工程落地陷阱

蓝鸟项目叫停启示:仓储AMR的验证与工程落地陷阱

这阵子圈子里聊得最多的,就是那家头部电商平台的“蓝鸟”机器人项目被叫停的消息。说实话,这个项目我关注很久了。当初立项的时候,内部对外放风说研发周期直接砍半,比行业平均速度快一大截,一度被当成“敏捷开发”的标…

2026/10/19 5:06:10 阅读更多 →

最新新闻

U8G2 OLED中文显示全攻略:字体包安装与编译配置

U8G2 OLED中文显示全攻略:字体包安装与编译配置

简介:本资源是面向Arduino嵌入式开发者的U8G2中文字体定制工具包,专为解决OLED/SSD1306等小型显示屏在U8G2库中无法直接显示中文的痛点而设计。包内集成GUI字体生成工具GUITool及完整u8g2-master源码,支持用户自定义字库提取、BDF格式转换与C…

2026/10/19 7:58:32 阅读更多 →
AI模型聚合网关实践:一个账号统一接入对话、绘图、音乐与视频生成

AI模型聚合网关实践:一个账号统一接入对话、绘图、音乐与视频生成

1. 这个项目的起点:一个账号调N个AI模型,到底解决了什么熟悉AI工具的朋友应该都有同感:手机里装了一堆App,网页收藏夹里躺着十几个标签页,这个模型擅长聊天,那个模型擅长画图,还有几个专门做音乐…

2026/10/19 7:58:32 阅读更多 →
中文BERT实战指南:环境搭建、微调与部署全流程

中文BERT实战指南:环境搭建、微调与部署全流程

1. 项目概述:为什么“中文版BERT”不是装个包就完事的事最近在某高校实验室带学生做文本分类小项目,好几个同学一上来就问:“老师,Anaconda里直接pip install bert-chinese就能用中文BERT了吗?”——这个问题背后藏着三…

2026/10/19 7:58:32 阅读更多 →
Anaconda环境下稳定运行中文BERT的完整实践指南

Anaconda环境下稳定运行中文BERT的完整实践指南

1. 项目概述:为什么需要在Anaconda环境下安装并使用中文版BERT最近有好几位做文本分析、智能客服或教育类NLP项目的同事来问:“能不能直接用现成的中文BERT模型,不用从头训练?”“PyTorch装好了,但BERT一跑就报错&…

2026/10/19 7:58:32 阅读更多 →
AI批量换背景实操指南:电商修图流程设计与避坑经验

AI批量换背景实操指南:电商修图流程设计与避坑经验

1. 电商修图这行,最磨人的不是技术,是“换背景”做电商出身的同行应该都有同感:产品图拍摄其实没那么苦,真正磨人的是把图整理成能上架的样子。尤其是换背景这件事,明明是刚需,却一直是个麻烦。我最早接触 …

2026/10/19 7:58:32 阅读更多 →
Git 常用操作核心逻辑:从提交到回滚的实战指南

Git 常用操作核心逻辑:从提交到回滚的实战指南

1. 从“记不住命令”到“肌肉记忆”:聊聊 Git 常用操作的核心思路很多开发者接触 Git 都是边用边查,今天commit忘了加-m,明天push被拒绝不知道怎么办。我当年也是这样,直到把常用命令背后的逻辑理顺之后,才真正告别了“…

2026/10/19 7:57:31 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →