首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >串接数组的尺寸不一致,但两个数组的大小相同。

串接数组的尺寸不一致,但两个数组的大小相同。
EN

Stack Overflow用户
提问于 2022-06-02 19:18:45
回答 1查看 225关注 0票数 0

我试图执行最小二乘回归,以检查我的分布的最优参数是否与用来生成随机数的参数大致相等。

我在直方图上生成了一个概率密度函数,它是从同一分布中随机获取的,我试图进行最小二乘回归,但我遇到了维数不一致的问题。

代码语言:javascript
复制
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)

当我试图运行这个程序时,我会得到一个错误

代码语言:javascript
复制
Dimensions of arrays being concatenated are not consistent.

但是当我检查y_和x_时,两者的尺寸是一样的。有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-02 20:13:34

在你的代码中

代码语言:javascript
复制
H = [ones(length(y_),1),x_];   % This is the problem

语句ones(length(y_),1)正在创建一个49x1列向量,而x是一个1x49行向量。因此,您需要下面的一个或另一个来连接,这取决于您想要的是2行矩阵还是2列矩阵。

代码语言:javascript
复制
H = [ones(length(y_),1),x_'];   % creates a 49x2
H = [ones(1,length(y_)),x_];   % creates a 2x49
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72481306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档