2015-02-06 3 views
0

Я пытаюсь взять производную спектра с 125 полос, используя следующие строки:Спектр Производная в MATLAB, в конечной точке proble

dW=diff(wavelength); 
dR=diff(data); 
df=dR./dW; 

проблема в следующем шаге я хочу, чтобы сравнить его с оригинальный спектр численно, а также визуально по рисунку, но размер df равен 124, однако моя первоначальная длина волны составляет 125. Вопрос: мне нужно удалить первую или последнюю полосу? однако выход некоторых программ спектрального анализа не меняет размер. взятие среднего числа полос также не работает, это делает график, демонстрирующий безумное поведение.

ответ

1

diffis basically:

Y = [X(2)-X(1) X(3)-X(2) ... X(m)-X(m-1)] 

, который означает, что он должен быть один короче, чем вход (вы не можете вычитать что-то из ничего, не так ли?).

Что вы должны делать, конечно, зависит от того, что вы хотите сделать, но наименее «изменяющий смысл» подход (вид сохранения причинности в отношении времени выборки) заключался бы в том, чтобы добавить dW и dR с помощью одного произвольное значение.

Кстати, ваше отношение df=dR./dW может иметь много NaN с, если dW имеет нули (что происходит, как только два последовательных значения данных совпадают).

+0

Спасибо за ваш ответ, я не получил точно ваше предложение, добавив случайное число, которое может привести к тому, что данные будут совершенно разными, и это делает невозможным численный анализ этого. – Ress

+0

нет * добавление *, добавление вывода 'diff'. Вы уверены, что понимаете, что делает 'diff'? –

Смежные вопросы