我想将使用 LDPC 编码器和解码器的简单系统中的 BER 数据导出到通信工具箱的 BER 工具中并绘制 BER 曲线。
我已经使用 LDPC 修改了示例系统 commdvbs2.mdl,它位于帮助菜单中的 Demos > Simulink Demos > Application-Specific Examples > DVB-S.2 Link,包括 LDPC Coding。
为了简化它,我删除了通用块交织器和通用块去交织器。我还删除了 BCH 编码器和 BCH 解码器。为了弥补 BCH 编码器的不足,我将 BBFRAME 缓冲块中的零填充更改为具有列大小dvb.BCHCodewordLength
而不是dvb.BCHMessageLength
.
我将 AWGN 块更改为具有以下参数: 模式:Signal to noise ratio (Eb/No)
Eb/No (db):dvb.EsNodB / log2(dvb.BitsPerSymbol)
每个符号的位数:dvb.BitsPerSymbol
符号周期 (s):dvb.BitPeriod * dvb.BitsPerSymbol
到目前为止,这一切都有效。如果我将模型参数更改为 1 dB 的 Es/No,我仍然会得到 0 BER 和 0 PER。
但是现在我在将 BER 从模型中取出并在 BER 工具中绘制时遇到了问题。我添加了一个“To Workspace”块并将 BER 错误率计算器的输出连接到该块。我命名了变量ber_out
并将限制数据点设置为 last 1
。
然后我将 AWGN 块的 Eb/No 更改为:EbNo
,这是 BER 工具逐步通过以绘制 BER 的向量。(以新名称保存对模型的这些更改。)
在 BER 工具中,我转到 Monte Carlo 选项卡。我将 Eb/No 范围设置为:0:0.2:2
. 将 BER 变量名称设置为:ber_out
。
运行模拟后,我得到了一个什么都没有的图。诊断工具弹出以下两条消息:
来源:commdvbs2_noBCH_noInterleave_EbNo_BERTool。评估 block_diagram 'commdvbs2_noBCH_noInterleave_EbNo_BERTool' 的 'StopFcn' 回调时出错。来源:未知。向量的长度必须相同。
我究竟做错了什么?
(MATLAB 版本是 2012a。)