QD准确定性信道模型MATLAB实现:射线追踪与随机散射结合

简介:MATLAB 准确定性(QD)信道仿真实现面向毫米波(mmWave)射频应用,提供基于图像法的开源射线追踪通道代码,适合无线通信领域学生、研究人员与工程开发者用于传播建模和信道分析。资源共 328 个文件,以 92 个 m 脚本、97 个 dat 数据文件为主,并搭配 json/csv 参数文件、xml/amf 场景几何文件及说明文档,压缩包整体 33.82MB。软件无需安装过程,将存储库下载或克隆至本地即可使用;代码不依赖额外工具箱,在 MATLAB R2016b 及以上版本运行。目前已有 1036 人学习。默认示例为 BoxLectureRoom 场景,同时提供 ConferenceRoom、EnterpriseCubicle 等 CAD 模型,可通过修改 main.m 中的场景名切换。核心功能涵盖镜面反射、实测校准的准确定性射线扩散、材料库、基于追踪的移动性支持,并接受 XML 与 AMF 格式的 CAD 文件导入,便于快速开展毫米波信道仿真实验与二次开发。

1. 射线追踪与QD准确定性通道:这套MATLAB实现能替你完成什么

做毫米波系统级仿真时,我经常遇到一个尴尬:纯统计信道模型(瑞利、莱斯)算不出天线位置带来的差异,而纯射线追踪软件又慢又封闭,改一个反射面参数要重新跑半小时。这个缺口正是QD(Quasi-Deterministic,准确定性)通道模型所填补的——用射线追踪计算强反射路径,用统计方法补上随机漫散射。这份qd-realization MATLAB代码包就是围绕这个思路做的系统开源实现:它把环境几何、射线追踪、散射合成、信道矩阵输出串成一条完整链路,适合做物理层算法验证、链路级仿真的从业者,拿到手可以直接嵌入自己的仿真框架。

2. QD通道模型拆解:确定性射线与随机散射如何衔接

QD模型的思路,是先把信道劈成两半再组合。一半是确定性路径——它由具体的墙面、楼宇边缘这些几何体决定,用射线追踪算出来;另一半是随机分量——它对应树木、行人、路灯这些没法逐一定位的散射体,用统计生成。这两半的衔接质量,直接决定整个仿真是否可信。

2.1 确定性分量:镜像法射线追踪的三步计算

确定性分量的实现,最常见的做法是镜像法(image method)。原理不难:把发射点关于反射面做镜像,镜像点到接收点的连线在反射面上的交点,就是实际反射点,而镜像点到接收点的路径长度,就等于真实反射路径的几何长度。

我在复现时发现,这套逻辑落到MATLAB有三个必须处理的细节:垂足投影、线段相交判定、角度方向约定。垂足投影决定镜像点的位置;线段相交判定决定这条射线是不是真的穿过了墙面(很多翻车案例都出在这一步,比如镜像点找到了但反射点落到墙的延长线上);角度方向约定则影响下游的天线阵列响应计算。

% compute_reflection_path.m % 计算发射点经过单面墙反射后到达接收点的路径 function path = compute_reflection_path(tx, rx, wall) % wall 包含: p1 起点, p2 终点, 法向量 n wall_vec = wall.p2 - wall.p1; wall_len2 = wall_vec * wall_vec.'; % 墙面长度平方 t = ((tx - wall.p1) * wall_vec.') / wall_len2; proj = wall.p1 + t * wall_vec; % 发射点垂足 tx_img = tx + 2 * (proj - tx); % 发射点关于墙面的镜像 % 关键检查: 镜像点 -> 接收点 的连线是否真正穿过墙面线段 [hit, hit_pos] = segment_intersect(tx_img, rx, wall.p1, wall.p2); if ~hit path = []; return; end d = norm(tx_img - rx); % 反射路径总长度 c = physconst('LightSpeed'); path.delay = d / c; % 传播时延 path.pow = (c / (4 * pi * d * cfg.fc))^2; % 自由空间损耗 path.aoa = compute_angle(hit_pos - rx); % 到达角, 接收点为原点 path.aod = compute_angle(tx - hit_pos); % 离开角, 反射点为原点 path.tx_img = tx_img; % 镜像点, 调试时用 end

这段代码里,wall_len2和t是在解投影参数方程,用来找垂足位置;tx_img是镜像点,也是整个镜像法的核心中间变量。注意segment_intersect这个函数不是MATLAB内置的,它放在代码包的util目录里——作用是判断镜像点到接收点的连线是不是真的落在墙面线段范围内。很多初版实现会漏掉这个判断,导致算出一条穿墙反射路径,PDP上出现一个虚假的强峰。

参数说明:cfg.fc是载频,在config_default里定义;path结构体里的aoa和aod都是三维向量,方向约定是「以接收点为原点、指向来波方向」。下游计算阵列响应时统一用这个约定,不要中途换坐标系。

2.2 随机分量:散射体分布与信道系数合成

确定性路径算完之后,QD模型的另一半是随机分量。原则是:能用几何关系确定的用射线追踪,确定不了的用统计分布补上。散射体在空间中的位置没有先验信息,常见做法是假设它们的时延服从指数分布、角度服从高斯分布,各散射体之间相互独立。

实际的合成逻辑是先在时延轴上生成散射路径,再把功率、相位、角度逐一配上去:

% generate_scatter_paths.m % 在延迟域生成随机散射路径 function scat = generate_scatter_paths(tx, rx, cfg) d_los = norm(tx - rx); t_los = d_los / physconst('LightSpeed'); % 散射时延: 从 LOS 时延开始, 按指数分布向外扩展 scat.delay = t_los + exprnd(cfg.delay_spread, [1, cfg.num_scatter]); % 散射功率: 指数衰减, 并归一化到给定散射能量占比 scat.pow = exp(-(scat.delay - t_los) / cfg.delay_spread); scat.pow = scat.pow / sum(scat.pow) * cfg.scatter_ratio; % 散射相位与角度 scat.phase = 2 * pi * rand(1, cfg.num_scatter); scat.az = 2 * pi * rand(1, cfg.num_scatter); scat.el = randn(1, cfg.num_scatter) * cfg.el_spread; end

这里的cfg.delay_spread是时延扩展,不建议拍脑袋填。室内会议室场景一般取20到50纳秒,室外街道场景取100到300纳秒。cfg.scatter_ratio是随机分量的能量占比,取值范围通常在0到1之间,用来控制莱斯K因子——比如scatter_ratio=0.1意味着随机分量能量占10%,K因子约为10dB。

随机分量生成完之后,把确定性路径和随机散射路径按各自的delay、pow、phase加起来,就得到完整的时延功率谱。这一步看起来简单,但有一个容易忽略的点:功率归一化的时机。必须先分别对确定性路径集合和随机路径集合做内部归一化,再按scatter_ratio做整体加权,最后一起归一化。顺序反了,PDP的总功率就会随散射体数量变化,换一组随机数结果就变。

2.3 QD与纯统计模型、纯射线追踪的边界

很多刚接触这个模型的人会问:既然已经有了射线追踪,为什么还要保留随机分量?反过来,既然有统计信道,为什么还要费劲算镜像?这里有一个简洁的判断分支:

  • 环境几何对你的仿真结论有影响,用QD。比如你要对比天线摆放在窗边和走廊尽头的性能差异,纯统计模型给不出这个空间信息。
  • 环境几何影响不大,只是要一个平均意义上的误码率,纯统计模型(莱斯/瑞利)更省事,参数少、算得快。
  • 要精确的场强覆盖图、天线方向图对多径的空间响应,纯射线追踪才是归宿,QD的统计分量会抹掉那些细粒度信息。
参数维度纯统计信道(莱斯/瑞利)QD准确定性通道全射线追踪
环境几何感知不感知感知主要反射面与LOS感知全部几何体
漫散射处理全部随机化统计分量建模依赖射线密度
单次仿真耗时毫秒级秒级分钟到小时级
典型用途链路级平均性能系统级空间相关性分析室分、场强预测

我自己的习惯是:先在纯统计模型里把算法框架调通,再换成QD模型验证几何相关结论。如果直接上QD,一旦仿真结果不合理,很难判断是算法问题还是信道模型引入的问题。

3. 代码包结构与快速复现:从配置到PDP出图

把QD模型落成代码之后,这套包的结构其实很直白,核心就是「配置 → 射线追踪 → 信道合成 → 绘图」四步。这一章先把文件组织讲清楚,再用最小复现流程跑通默认场景,最后教你解读输出图。

3.1 模块划分与文件清单

代码包按功能分成五个模块,文件组织和职责如下:

文件名职责关键输出
config_default.m场景、天线、仿真参数集中管理结构化参数cfg
ray_launcher.m对全部墙面执行镜像法追踪确定性路径结构体数组
qd_channel_builder.m合成确定性路径与随机散射信道矩阵H与输出结构体chan
channel_matrix.m把路径参数映射为MIMO信道矩阵N_rx x N_tx x N_taps矩阵
plot_pdp.m / plot_angle_spectrum.m绘制PDP与角度谱图形句柄

模块之间的调用关系是单方向的:config_default只被读取,ray_launcher的输出只被qd_channel_builder消费,绘图函数只读最终结果。这样设计的好处是,你想换一个反射面模型,只需要改ray_launcher内部,下游代码不用动。

3.2 最小复现流程:run_demo跑通默认场景

拿到代码后第一件事,就是跑默认场景确认环境没问题。在MATLAB命令行进入包目录,执行:

run_demo

run_demo内部的核心流程是四行:

cfg = config_default(); % 读取默认配置 paths = ray_launcher(cfg); % 射线追踪, 得到确定性路径 [H, chan] = qd_channel_builder(cfg, paths); % 合成QD信道 plot_pdp(chan); % 绘制时延功率谱

这里有个经验:不要在MATLAB的「当前文件夹」窗口双击运行run_demo,而是先用cd命令进入目录再执行,避免路径函数解析出错。cfg里的默认参数是一个典型室内场景——一个5米乘8米的矩形房间,发射端在角落,接收端在房间中部,四周墙面反射系数用默认参数。跑完后命令行会打印一行提示,显示确定性路径数量、随机散射路径数量和总功率,这三个数字是后面排查问题的第一手线索。

3.3 输出解读:PDP、角度谱与信道矩阵

先看PDP图。横轴是时延,纵轴是归一化功率(dB)。视距路径通常在第一个尖峰,接下来两三个离散尖峰是墙面反射的确定性路径——它们之间的时延差,就是两条路径的长度差除以光速,可以用这个来反推是哪面墙贡献的。尾部的连续拖尾就是随机散射分量,它的包络应该是指数衰减的形状。

再看角度谱。这个图的常见用法是检查峰值方向是否与墙面几何一致。比如你设了一面与接收端呈30度夹角的墙面,角度谱到达角峰值就应该出现在30度附近。如果差得远,大概率是2.1节里说的角度方向约定出了问题。

信道矩阵H的维度是N_rx x N_tx x N_taps。N_taps是时延抽头数,由带宽和最大时延决定。比如BW=100MHz时,时延分辨率是10ns,如果最大时延是500ns,N_taps就是50。改带宽后N_taps会自动变化,不需要手动调。

4. 参数调优与场景适配:载频、带宽与动态快照

默认场景跑通只是起点,把这套QD实现移植到自己的仿真链路才是目的。这一章讲三个最常改的方向:载频带宽、动态场景、系统级对接。

4.1 载频、带宽与时延分辨率的联动调整

把默认场景从低频段搬到毫米波频段,只需要改config_default里的两行:

cfg.fc = 28e9; % 28GHz 毫米波 cfg.bw = 400e6; % 400MHz 带宽, 时延分辨率 = 1/400e6 = 2.5ns

改载频要注意的是反射系数。代码默认用的混凝土反射系数是在2.4GHz附近标定的,换成28GHz后,墙面反射系数的幅度和相位都变了。常见做法是先用简化的菲涅尔反射系数公式替代固定值,再在config里加一个wall.ref_coeff字段,按墙面材质分别配置。

改带宽要注意的是时延分辨率。QD代码里所有时延都被离散到1/BW的网格上,带宽降到20MHz后,时延分辨率变成50ns,两条相距很近的反射路径会被合并成一条,PDP的尖峰数量会变少。这不是代码bug,是离散化的正常结果。如果你的仿真里需要分辨多径,带宽尽量保持100MHz以上。

4.2 动态场景:多快照生成与预计算优化

车载或行人移动场景需要生成时间序列信道,做法是按位置步进重新计算:

% 生成 2 米轨迹、5mm 步长的多快照信道 step_len = 0.005; % 5mm n_snap = 400; H_all = zeros(n_rx, n_tx, n_taps, n_snap); for k = 1:n_snap cfg.rx_pos = base_rx + [k * step_len, 0, 0]; paths = ray_launcher(cfg); [H_all(:,:,:,k), ~] = qd_channel_builder(cfg, paths); end

步长选择有个硬约束:必须小于半波长。28GHz波长约10.7mm,半波长约5.3mm,所以5mm步长是安全的;如果载频升到60GHz,波长5mm,步长要缩到2mm以下,否则相邻快照之间的信道相关性会明显失真。

这段循环跑起来会有点慢,因为ray_launcher在每一帧都重新计算全部镜像。如果环境静止、只有接收端移动,可以用预计算优化:反射面不变,发射端镜像点也不变,只有路径长度和交点位置在变。优化后的逻辑是「先算一次镜像,再按位置更新时延」:

% 预计算镜像点, 静态部分只算一次 img_points = precompute_images(cfg); for k = 1:n_snap cfg.rx_pos = base_rx + [k * step_len, 0, 0]; paths = update_paths_with_images(img_points, cfg); % 只更新动态部分 [H_all(:,:,:,k), ~] = qd_channel_builder(cfg, paths); end

4.3 与系统仿真对接:信道矩阵转频域响应

链路级仿真通常需要频域信道响应,而QD代码输出的是时域抽头。转换用FFT完成:

% 时域信道矩阵 -> 频域响应 N_fft = 2048; % 与OFDM子载波数一致 H_freq = fftshift(fft(H, N_fft, 3), 3);

转换前确认H第三个维度的时延轴已经按1/BW对齐。BW=400MHz时,相邻抽头间隔2.5ns,FFT之后频域响应的总带宽刚好是400MHz,第N_fft/2+1个点对应0Hz。如果你的OFDM系统子载波间隔是15kHz或30kHz,N_fft取2048或4096足够覆盖整个信号带宽。

对接完频域响应,后续的均衡、信道估计、MIMO检测都是常规流程。这里我想强调一个细节:QD信道矩阵H是复数矩阵,但它的功率在时域抽头上是归一化的;转成频域后,每个子载波的平均功率应该约等于1(线性)。如果你发现频域响应平均功率明显偏离1,先回查随机分量的归一化顺序,这是最常见的错误来源。

5. 避坑指南:QD实现中的五个常见故障与排查

这套代码我在不同频段、不同场景下反复用过,踩坑最多的集中在五个地方。每条按现象、原因、解决来写,方便你对照排查。

5.1 假峰出现在确定性反射峰附近

现象:PDP上除了视距路径和墙面反射峰,出现一个位置随散射体数量变化的额外尖峰,形状和真实反射峰很像。 原因:随机散射时延直接用exprnd生成,没有隔离带。某个散射体的时延恰好落在确定性反射峰附近,叠加后把该处功率抬高,看起来像多了一条确定路径。 解决:给随机散射时延加最小间隔约束。具体做法是生成散射时延时,剔除那些与确定性路径时延差小于1/BW的值,或者按确定性路径分区间隔去生成散射体。改完后假峰会消失,PDP拖尾恢复光滑的指数形状。

提示:排查时先区分这个峰的位置是否随随机种子变化。固定不变的是确定性路径,随种子飘的是随机分量,两者的处理逻辑完全不同。

5.2 时延扩展比理论预期小一个数量级

现象:仿真得到RMS时延扩展只有几纳秒,而相同场景实测或理论估算应该有几十纳秒。 原因:多数情况是cfg.delay_spread被设置得过小。室外场景如果填20ns,散射拖尾很快衰减完,时延扩展自然小。另一种可能是归一化顺序错误,导致随机分量能量集中在头部第一条散射路径。 解决:先用理论估算校验参数。室外宏蜂窝场景delay_spread取100到300ns,室内取20到50ns。改完参数后重新跑,RMS时延扩展会跟着提升。如果提升不明显,检查scatter_ratio是否太小——K因子过高也会压实时延扩展。

5.3 角度谱峰值与反射面法向错位

现象:角度谱的确定性峰指向,和墙面几何推算出的反射方向不一致,偏差几十度。 原因:到达角和离开角的坐标定义没有统一。一部分代码用「以接收点为原点、指向来波方向」,另一部分用「以反射点为原点、指向墙壁方向」,中间少了一次坐标系转换,角度就偏了。 解决:统一角度定义。检查compute_angle的输入参数,确认到达角必须用hit_pos - rx这个方向向量,离开角必须用tx - hit_pos这个方向向量。修改后角度谱峰值会与墙面几何对齐。

5.4 两次运行结果完全相同

现象:改了随机数相关参数,重新运行脚本,输出PDP和信道矩阵和上一次一模一样。 原因:MATLAB启动时默认随机种子是固定的。脚本里没有调用rng('shuffle'),导致每次运行的随机序列完全相同,散射分量没有随机性。 解决:在脚本开头加rng('shuffle'),让随机种子随系统时间变化。调试对比时反而要固定种子,比如rng(42),保证两次运行可复现、好定位问题。

5.5 墙面数量增大后内存与耗时失控

现象:把场景从简单房间换成几十面墙的复杂环境后,ray_launcher耗时从秒级涨到分钟级,内存占用翻了几倍。 原因:墙面两两组合产生了大量无效镜像路径,尤其是那些相距很远、不可能产生有效反射的墙,也被纳入了计算。 解决:先做空间粗筛。对墙面按位置分桶,只计算与收发端距离在一定范围内(比如50米)的墙面。代码包里的bucket_cull函数就是干这个的,传入墙面数组和收发位置,返回筛选后的墙面子集。实际测试中,同样的复杂场景能减少80%以上无效计算。

6. 验证与进阶:用衰落统计与信道容量标定QD实现

QD实现跑通之后,我的习惯是先别急着往系统仿真里塞,先把输出结果放到统计检验这一关过一遍。这一章给两个我常用的校验手段,外加一个扩展方向:前者用来确认信道能量分配与衰落包络符合预期,后者用来把QD模型从仿真工具升级成实测数据的校准工具。

6.1 用莱斯K因子验证能量分配

QD信道的确定性分量和随机分量能量比,理论上就是莱斯K因子。验证方法是在固定位置多次生成随机散射(固定确定性路径、刷新随机种子),统计信道矩阵第一个抽头幅度的分布,再与理论K因子对应的莱斯分布做对比:

K = (1 - cfg.scatter_ratio) / cfg.scatter_ratio; theoretical_rician = makedist('Rician', 's', sqrt(K/(K+1)), 'sigma', sqrt(1/(2*(K+1))));

如果采样幅度分布与理论曲线拟合得好,说明能量分配逻辑是对的;如果分布形状像纯瑞利,说明scatter_ratio被设成了接近1,随机分量吞掉了全部能量。

6.2 用信道容量做整体合理性检验

信道容量的数值变化趋势能反映信道模型是否符合直觉。固定发射功率,随机生成多组QD信道,计算遍历容量。可以预期:增加确定性路径数量(比如增加反射面数量)会提升容量低频段的稳定性;增加散射体数量会让容量分布更集中。如果容量反而下降,通常不是QD模型的问题,而是信道矩阵的功率归一化出了偏差,回查第4章的归一化顺序。

6.3 扩展方向:把QD模型用作实测校准工具

QD模型的统计分量参数(delay_spread、角度扩展)可以当作可调旋钮,用实测数据来标定。做法是拿着实测PDP,调这些参数直到仿真PDP的拖尾斜率和角度谱宽度与实测对齐。对齐之后再用这套参数跑其他位置,就能得到「带实测统计特征」的仿真信道。这套包做这个用途特别顺手,因为参数全部集中在config_default里,不用改代码。

刚拿到这套代码时,我前两周一直在较真随机分量的「真实性」——总觉得PDP拖尾不够整齐。后来用实测数据对标才发现,QD模型的粒度就停在这一层:确定性部分必须和几何严格一致,随机部分只需要统计分布对得上,不去预测每个散射体的位置。明白了这个边界,我把delay_spread和scatter_ratio当成校准旋钮而不是物理参数来用,仿真结果很快就和实测贴合了。从那以后每次换场景,我都强制先跑一遍第5章的三个排查点,再开始调参,几乎没有翻过车。希望帮到你。

本文还有配套的精品资源,点击获取

相关新闻

司法AI文书生成的质量防线:从架构设计到分层校验系统实践

司法AI文书生成的质量防线:从架构设计到分层校验系统实践

1. 先泼一盆冷水:文书翻车,多半不是“模型不行”做过司法AI这个方向的同行应该都有类似感受:外界一提“AI写判决书”,第一反应就是“模型会不会乱写”。但真正在一线盯过项目的人会告诉你,绝大多数线上翻车&#xff0c…

2026/10/22 12:53:50 阅读更多 →
供应商质量管理与控制:从准入到量产的四道闸门闭环方法

供应商质量管理与控制:从准入到量产的四道闸门闭环方法

简介:面向企业供应链管理、采购与质量管控人员的供应商质量管理方案文档,针对供应商来料质量不稳定、过程监管难、供应商绩效评价缺乏量化依据等实际问题,系统梳理了六类核心举措:制定联合质量计划、向供应商派遣常驻代表、定期或…

2026/10/22 1:55:06 阅读更多 →
系统编程进阶:内存、并发与网络核心原理解析

系统编程进阶:内存、并发与网络核心原理解析

简介:UIUC CS241系统编程中文讲义是一份开源翻译项目,面向希望系统学习操作系统、并发、网络与Shell编程等主题的中文开发者。内容源自美国伊利诺伊大学厄巴纳-香槟分校经典课程,以Markdown笔记为主体,辅以图片与静态站点文件&…

2026/10/22 3:00:04 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/22 11:01:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/22 10:42:00 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/22 10:40:08 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/22 10:56:37 阅读更多 →

日新闻

周新闻

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

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

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

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

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

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

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

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

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

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 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/21 21:50:56 阅读更多 →
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/21 21:51:55 阅读更多 →
黑夜航拍船只数据集训练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/21 16:24:48 阅读更多 →