Как рассчитать результат cfit? - PullRequest
0 голосов
/ 17 июня 2019

Я использую MATLAB для анализа некоторых данных, собранных экспериментально. После использования функций envelop e и abs я использую функцию fit, чтобы получить требуемое уравнение, которое мне нужно вывести в квадрат, а затем интегрировать.

Код, который у меня есть для получения уравнения и его интеграции, выглядит следующим образом:

[yupper,ylower] = envelope(signal,1000,'peak');

dat = abs(yupper);

fitted = fit(x,dat,'linearinterp');

% Create a new function handle
fitted = @(x)fitted(x);

q = integral(fitted, 3e4,9e4,  'ArrayValued', 1)

Чтобы возвести в квадрат функцию, которую я использую (используется с . in .^ и без него):

%square fitted
fitted = fitted.^2;

Я борюсь, когда пытаюсь поставить квадрат f перед преобразованием в дескриптор функции, я получаю ошибку (я):

Undefined operator '.^' for input arguments of type 'cfit'.

Error in findenergyfromfitcurve (line 5) fitted = fitted.^2;

Undefined operator '^' for input arguments of type 'cfit'.

Error in findenergyfromfitcurve (line 5) fitted = fitted^2;

и когда я преобразую в дескриптор функции, то в квадрат я получаю те же ошибки для дескриптора функции:

Undefined operator '^' for input arguments of type 'function_handle'.

Error in findenergyfromfitcurve (line 10)
fitted = fitted^2;

Undefined operator '.^' for input arguments of type 'function_handle'.

Error in findenergyfromfitcurve (line 10)
fitted = fitted.^2;

Вкратце - как мне вывести значение функции fit?

1 Ответ

2 голосов
/ 17 июня 2019

Я думаю, что это бы сработало:

fsq = @(x)f(x).^2;

Я ожидаю, что это сработает, потому что вы бы возводили в квадрат числа (выходные данные f(x)), а не функциональные ручки илиcfit объекты (сам объект f).

...