保存带有连接的变量名

10次浏览(过去30天)
路易"class=
路易 2017年11月16日
评论道: 路易2017年11月17日
你好,
谢谢你花时间帮助我。我花了很多时间尝试不同的解决方案,并在网上查找,但我觉得我完全错了。金宝搏官方网站我的问题很简单。
我有一个数据集。它是这样的:
X1 = [1 2 3 4 5]'
X2 = [4 5 8 9 7]'
Y = [4 1 7 8 1]'
现在,为了执行线性回归,我将X中的x1和x2连接起来:
X = [x1 x2]
并执行我的回归:
b = inv(X'*X)*X'*y = (b1 b2)'
我的问题如下。我怎样才能得到某种形式的数组,从X中恢复x1和x2,这样我就可以产生一个漂亮的输出表,它会给我这样的东西:
变量参数估计
x1b1
x2b2
用手做很简单。但现在假设我使用dim(X) = 20,这不再是一个选项。
非常感谢您的评论。我相信这样的事情不可能很难,但我完全找不到一个简单的解决办法。
5个评论
Stephen23"class=
Stephen23 2017年11月17日
编辑:Stephen23 2017年11月17日
注意 发票 Help明确指出 x = A\b 计算方法与 x = inv(A)*b 推荐用于求解线性方程组" .这是因为 发票 是否比实际使用更慢、更不准确 mldivide mrdivide .这意味着你应该使用 mldivide 是这样的:
> > (X * X) \ X * y
ans =
-1.8812
1.5363
而不是使用 发票

登录评论。

接受的答案

Stephen23"class=
Stephen23 2017年11月17日
编辑:Stephen23 2017年11月17日
您将所有数据存储在许多单独的变量中,在变量名称中使用元数据,这种方法使您的工作变得更加困难。这是因为一旦你将元数据放入变量名中,它就会使元数据的访问变得缓慢而复杂:
我建议您将所有数值数据存储在 一个 数组,可以是数字数组、单元格数组、结构体或表等。当从文件中读取数据时,这些都可以很容易地自动生成,例如将头名称作为结构中的字段名,或将变量名称放在表中。
下面是一个简单的例子,展示了这个结构是如何工作的:
%数据:
Y = [4;1;7;8;1];
S.var1 = [1;2;3;4;5];
S.var2 = [4;5;8;9;7];
%连接字段到矩阵:
C = struct2cell(S);
X = [c {:}];
解方程组:
b = (X'*X)\X'*y;
%打印摘要:
Z =字段名(S)';
Z(2,:) = num2cell(b);
流(“var估计:\ n”
流(' % s: % + f \ n”, Z {:})
在命令窗口中显示:
var估计:
var1: -1.881226
var2: + 1.536398
注意,一旦定义了数据,我就再也不会引用它们的名字了!这意味着它将适用于任何数量的字段。还要注意,字段是按照定义它们的顺序存储的,尽管您可以使用更改字段名的顺序 orderfields
您可以对单元格数组或表执行类似的操作。
1评论
路易"class=
路易 2017年11月17日
这是明智的,简单的,优雅的:)非常感谢你的帮助!我会照你说的做。

登录评论。

更多答案(0)

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!