迭代求解稀疏的病态系统

计算科学 线性代数 matlab 线性求解器
2021-12-22 13:29:01

我有一个稀疏(密度 = 0.2%)的病态系统,我试图解决它,但没有运气。

背景

我有一个采样数据序列,其中每 8 个样本中有两个由于错误而被归零。该序列是存在白噪声时的两个正弦曲线。

我想做的是确定原始序列的信噪比。我知道有些信息永远丢失了,所以我不会得到确切的答案,但这是可以接受的,只要我可以使用现有数据获得合理接近的东西,无需任何过滤(即没有插值)。

战略

像我一样拥有一个缺少样本的序列就像将原始序列乘以方波(在我的情况下为 75% 占空比)。在频域中,这相当于规则间隔脉冲与我的原始序列的 DFT 的周期性卷积。本质上,它就像对输入序列进行循环移位,根据方波 DFT 将特定点乘以特定权重,然后将它们相加。这可以表示为一个线性系统。

所以我已经生成了代表卷积的稀疏矩阵,现在我试图解决稀疏矩阵Ax=b在哪里,是原始序列的 DFT,是损坏序列的 DFT。Axb

不幸的是,稀疏矩阵是病态的。使用matlab,既没有mldivide也没有svds提供有用的答案。问题是,我知道输入序列(及其 DFT)是什么样的。它是一个直流分量、两个以 bin 为中心的正弦曲线和白噪声。所以我有一个很好的初步猜测,我只是想不出一种方法来迭代它。另外值得注意的是,虽然 DFT 是复数值的,而且这些运算都是在复数上的,但我只关心数量级。

如果我解决mag(A)x=mag(b)了,我会得到一个不错的结果,但它有点过于乐观,所以我希望复杂值的迭代解决方案会更准确。

我对可接受解决方案的标准是最小化 Ax和大小之间的均方误差b

任何帮助将不胜感激!我对这类线性系统几乎没有经验,但我正在尽我所能学习适当的方法。

这是我用来测试我的方法的代码:https ://pastebin.com/F3bArgnR

0个回答
没有发现任何回复~