#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