У меня есть формула в Excel, которая содержит массив; {1,2,3} его использование можно увидеть по адресу: я хотел бы генерировать его динамически, например, arrayfun(4) сгенерирует {1,2,3,4}. Я могу создать очень длинный массив с помощью COLUMN(1: 1), но мне нужна формула, которая генерирует массив явной длины.

Конкретная формула, в которой я пытаюсь использовать это LINEST, и пример ее использования можно найти по адресу http://people.stfx.ca/bliengme/ExcelTips/Polynomial.htm

2 ответа2

1

У вас есть правильная идея с COLUMN , но, возможно, проще будет настроить использование ROW . Для вашего конкретного примера вы можете использовать следующее для генерации массива {1,2,3,4} .

=ROW(1:4)
1

Ответ в соответствии с @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²

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .