如何在 Matlab 中为结构数组中的结构构建多元回归
How to build multiple regression for structures within array of structures in Matlab
我正在尝试使用 regress
函数:
b = regress(y,X);
但是,我无法让它与结构一起工作。我想我需要将两个结构(独立变量)放入 X
才能工作。有办法吗?也许我走错路了?
这是我的结构的样子:
s(1).s1 = -0.169
s(2).s1 = 0.125
s(3).s1 = -0.188
s(4).s1 = 0.188
s(5).s1 = 0.012
s(1).s2 = 0.572
s(2).s2 = 0.300
s(3).s2 = 0.018
s(4).s2 = 0.147
s(5).s2 = 1.080
s(1).s3 = 0.076
s(2).s3 = -0.490
s(3).s3 = -0.144
s(4).s3 = -0.134
s(5).s3 = -0.183
s1
和 s2
是我的自变量,s3
是因变量。
我无法理解您将值作为结构数组中的字段的原因....但是使用它,提取字段并将它们放入矩阵(用于自变量)和向量中(对于因变量)。
将每个结构的每个字段提取到逗号分隔的列表中,然后使用 regress
:
X = [[s.s1].' [s.s2].'];
y = [s.s3].';
b = regress(y, X);
这是假设第一列由 s1
组成,第二列由 s2
组成 "independent" 矩阵。此外,s3
是因变量。简而言之,X
矩阵将由两列组成。第一列是从结构数组中提取的所有 s1
值,第二列是提取的所有 s2
值。相关向量由所有 s3
值组成。这种语法 [s.s1]
(或 [s.s2]
和 [s.s3]
)可能看起来有点奇怪,但它在 MATLAB 中很常见。例如,执行 s.s1
会生成一个逗号分隔的列表,该列表从结构数组中获取每个字段并像这样表示它们:
s(1).s1, s(2).s1, s(3).s1, s(4).s1, s(5).s1
用 []
包装它实际上创建了一个数组,但这创建了一个 行 向量。我们需要将其设为列向量,这就是需要转置 (.'
) 运算符的原因。对于 regress
,每一列都是一个变量,而每一行都是 X
矩阵的样本。我们对 s2
字段和 s3
.
的相关向量重复此操作
在 运行 这段代码之后,我得到:
>> format long g;
>> b
b =
-0.687194475280996
-0.21086419010155
format long g;
用于显示答案的更多精度。
我正在尝试使用 regress
函数:
b = regress(y,X);
但是,我无法让它与结构一起工作。我想我需要将两个结构(独立变量)放入 X
才能工作。有办法吗?也许我走错路了?
这是我的结构的样子:
s(1).s1 = -0.169
s(2).s1 = 0.125
s(3).s1 = -0.188
s(4).s1 = 0.188
s(5).s1 = 0.012
s(1).s2 = 0.572
s(2).s2 = 0.300
s(3).s2 = 0.018
s(4).s2 = 0.147
s(5).s2 = 1.080
s(1).s3 = 0.076
s(2).s3 = -0.490
s(3).s3 = -0.144
s(4).s3 = -0.134
s(5).s3 = -0.183
s1
和 s2
是我的自变量,s3
是因变量。
我无法理解您将值作为结构数组中的字段的原因....但是使用它,提取字段并将它们放入矩阵(用于自变量)和向量中(对于因变量)。
将每个结构的每个字段提取到逗号分隔的列表中,然后使用 regress
:
X = [[s.s1].' [s.s2].'];
y = [s.s3].';
b = regress(y, X);
这是假设第一列由 s1
组成,第二列由 s2
组成 "independent" 矩阵。此外,s3
是因变量。简而言之,X
矩阵将由两列组成。第一列是从结构数组中提取的所有 s1
值,第二列是提取的所有 s2
值。相关向量由所有 s3
值组成。这种语法 [s.s1]
(或 [s.s2]
和 [s.s3]
)可能看起来有点奇怪,但它在 MATLAB 中很常见。例如,执行 s.s1
会生成一个逗号分隔的列表,该列表从结构数组中获取每个字段并像这样表示它们:
s(1).s1, s(2).s1, s(3).s1, s(4).s1, s(5).s1
用 []
包装它实际上创建了一个数组,但这创建了一个 行 向量。我们需要将其设为列向量,这就是需要转置 (.'
) 运算符的原因。对于 regress
,每一列都是一个变量,而每一行都是 X
矩阵的样本。我们对 s2
字段和 s3
.
在 运行 这段代码之后,我得到:
>> format long g;
>> b
b =
-0.687194475280996
-0.21086419010155
format long g;
用于显示答案的更多精度。