понимание «Выходные данные функции должны быть того же размера, что и входные данные. Если FUN является подынтегральным выражением со значением массива, установите для параметра ‘ArrayValued’ значение true’

#matlab

#matlab

Вопрос:

Я пытаюсь численно интегрировать свою функцию log(1 A.*exp(-t.^2)) из -Inf в Inf, где A это матрица 80×1. Когда я использовал интегральную функцию, она показывает ошибку, которая

Выходные данные функции должны быть того же размера, что и входные данные. Если FUN является подынтегральным выражением, равным массиву, установите для параметра ‘ArrayValued’ значение true

 yprime = integral( @(t) (log(1  A.*exp(-t.^2))),-Inf,Inf );
 

Я ожидал yprime , что матрица 80×1, но это не так!

Комментарии:

1. Поскольку ваша функция имеет значение массива, вы должны поступить так, как указано в сообщении об ошибке.

Ответ №1:

Просто сделайте так, как указано в сообщении об ошибке. Когда Matlab сообщает вам установить именованный параметр для функции, это означает, что вы должны указать имя параметра и его значение в качестве конечных аргументов функции.

 >> yprime = integral( @(t) (log(1  A.*exp(-t.^2))), -Inf, Inf, 'ArrayValued', true );
>> size(yprime)
ans =
    80     1