如何求解 MMSE 接收器的方程?

信息处理 过滤器 数字通信 统计数据 咪咪
2022-02-08 03:35:35

给定最小均方误差接收器 [1] 的可实现速率的以下等式:

μ=1K1i=1,ikK1Mpdi(1K1M+K1Mμ)+1

κ(1+i=1,ikKpdi(Mpdi(1K1M+K1Mμ)+1)2)=i=1,ikKpdiμ+1(Mpdi(1K1M+K1Mμ)+1)2

我必须找到,μκ. 我正在尝试用matlab求解这些方程,首先我尝试使用solve然后vpasolve,但是,当d是一个具有不同数字(即随机)的向量,matlab 似乎永远找不到解决方案。对于这种情况d例如,它是一个所有值都等于 1 的向量,它可以快速找到解决方案。

这是我用来寻找解决方案的脚本: https ://pastebin.com/AWDwyR0U

难道我做错了什么?有没有更快的方法来找到这些方程的解?

参考:

[1] Hien Quoc Ngo、Erik G. Larsson 和 Thomas L. Marzetta,“超大型多用户 MIMO 系统的能量和频谱效率”,IEEE Transactions on Communications,第一卷。61,没有。4,2013 年 4 月。

2个回答

我怀疑是否存在一般的封闭式解决方案。对于第一个方程,你基本上想解决

μ=k1ak+bkμ
为了μ这等于搜索 a 的零点k+1三阶多项式,这是不可能的k>3. 所以,我担心你需要做一个数字解决方案。一旦你有μ您可以进行简单的计算κ.

关于数值解,这里有一个图

μk1ak+bkμ
这应该成为0解决方案:

N = 7
d = np.random.rand(N)
K = N+1
M = 16
p = 1

f = lambda mu: mu - 1/(K-1)*sum(1/(M*p*d_i*(1-(K-1)/M+(K-1)/M*mu)+1) for d_i in d)

mu = np.linspace(-5,5,10000)
plt.grid(True)

plt.plot(mu, f(mu))
plt.ylim((-0.5,0.5))

在此处输入图像描述

所以,有多种解决方案。也许你需要选择一个积极的?

我找到了一种数值求解的方法。首先我们把方程改成

μ1K1i=1,ikK1Mpdi(1K1M+K1Mμ)+1=0

κ(1+i=1,ikKpdi(Mpdi(1K1M+K1Mμ)+1)2)i=1,ikKpdiμ+1(Mpdi(1K1M+K1Mμ)+1)2=0

接下来,通过使用 Matlab 中的 fzero 我们发现μ,最后,使用μ和 fzero 再次我们可以找到κ.