我有一个50比1的矩阵,它是解调数据。由于这个矩阵在每一行中只有一个元素,我想在每一行中重复这个元素16次,所以矩阵变为50乘16.我是用Matlab中的repmat(A,16)
命令完成的。现在在接收端噪声也被添加到50乘16的矩阵中。我希望将它从50乘以1矩阵。我怎样才能做到这一点?
我尝试了所有行的平均值,但它不是一个有效的方法。如何知道此过程中何时发生错误?
您正在描述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.你能做的最好的就是使用它的伪逆,这是\
算子所做的。
我希望以上有所帮助。