我试图执行最小二乘回归,以检查我的分布的最优参数是否与用来生成随机数的参数大致相等。
我在直方图上生成了一个概率密度函数,它是从同一分布中随机获取的,我试图进行最小二乘回归,但我遇到了维数不一致的问题。
N = 10000;
mu = 5; sigma = 2;
r = randn(N,1);
x = mu+sigma*r;
bin=mu-6*sigma:0.5:mu+6*sigma;
[~,centers]=hist(x,bin);
f=hist(x,bin);
plot(bin,f,'bo'); hold on;
xlabel('bin');
ylabel('f');
y_ = f;
x_ = bin;
H = [ones(length(y_),1),x_]; % This is the problem
% Least-Squares Regression
Astar = inv(H'*H)*H'*y_;
Ytilde = H*Astar;
plot(x_,Ytilde, 'r-','LineWidth',2)当我试图运行这个程序时,我会得到一个错误
Dimensions of arrays being concatenated are not consistent.但是当我检查y_和x_时,两者的尺寸是一样的。有什么问题吗?
发布于 2022-06-02 20:13:34
在你的代码中
H = [ones(length(y_),1),x_]; % This is the problem语句ones(length(y_),1)正在创建一个49x1列向量,而x是一个1x49行向量。因此,您需要下面的一个或另一个来连接,这取决于您想要的是2行矩阵还是2列矩阵。
H = [ones(length(y_),1),x_']; % creates a 49x2
H = [ones(1,length(y_)),x_]; % creates a 2x49https://stackoverflow.com/questions/72481306
复制相似问题