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

时间:2018-03-05 09:03:54

标签: matlab

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

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

1 个答案:

答案 0 :(得分: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个。你能做的最好就是使用它的伪逆,这就是\算子的作用。

我希望以上有所帮助。