我在 excel 中有一个包含数组的公式;{1,2,3} 它的用法可以在我想动态生成它时看到,例如 arrayfun(4) 将生成 {1,2,3,4}。我可以使用 COLUMN(1:1) 生成一个非常长的数组,但我需要一个生成明确长度的数组的公式。
我尝试使用的具体公式是 LINEST,其使用示例可参见http://people.stfx.ca/bliengme/ExcelTips/Polynomial.htm
答案1
您使用 的想法是正确的COLUMN
,但使用 可能更容易设置ROW
。对于您的具体示例,您可以使用以下内容生成数组{1,2,3,4}
。
=ROW(1:4)
答案2
根据@Excellll的帮助,答案是公式
=COLUMN(INDEX(1:1024,1,1):INDEX(1:1024,1,3))
或者
=TRANSPOSE(ROW(1:3))
可以轻松使其动态化。
现在我可以使用 LINEST 生成具有动态顺序的多项式系数:
=LINEST(known_ys,known_xs^COLUMN(INDEX(1:1024,1,1):INDEX(1:1024,1,order)),TRUE,TRUE)
或者
=LINEST(known_ys,known_xs^TRANSPOSE(ROW(1:order)),TRUE,TRUE)
其中“known_ys”是包含我的 y 值的范围,“known_xs”是包含我的 x 值的范围,“order”是我想要应用多项式拟合的顺序。
此外,我可以将 LINEST 包装在 INDEX 函数中以根据需要提取任何特定系数,例如:
=INDEX(LINEST(known_ys,known_xs^TRANSPOSE(ROW(1:order)),TRUE,TRUE),1,3)
仅返回 R²