repmat或repemel命令的反向过程是什么?

问题描述 投票:0回答:1

我有一个50比1的矩阵,它是解调数据。由于这个矩阵在每一行中只有一个元素,我想在每一行中重复这个元素16次,所以矩阵变为50乘16.我是用Matlab中的repmat(A,16)命令完成的。现在在接收端噪声也被添加到50乘16的矩阵中。我希望将它从50乘以1矩阵。我怎样才能做到这一点?

我尝试了所有行的平均值,但它不是一个有效的方法。如何知道此过程中何时发生错误?

matlab
1个回答
0
投票

您正在描述y = A * x + n形式的问题,其中y是观测数据,A是已知的线性变换,n是噪声。最小二乘估计是未知向量x的最简单估计。这里的关键是将repmat()函数表示为矩阵,将观察到的数据表示为向量(即,50 * 16x1向量而不是50x16矩阵)。

x = 10 * rand(50,1);                % 50x1 data vector;
A = repmat(eye(length(x)),[16,1]);  % This stacks 16 replicas of x.
n = rand(50*16,1);                  % Noise
y = A * x + n;                      % Observed data
xhat = A \ y;                       % Least squares estimate of x.

至于A的逆(我假设你的意思是'反向')是什么,它没有。如果你看它的等级,你会看到它只有50.你能做的最好的就是使用它的伪逆,这是\算子所做的。

我希望以上有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.