Линейный диапазон / часть кривой в Matlab
Я построил кривую на основе некоторых экспериментальных данных, и она имеет линейный тренд в определенном диапазоне в масштабе журнала. Я хотел бы знать, есть ли простой способ дать диапазон, в котором он является линейным. Более конкретно, я хотел бы знать, в каком диапазоне он линейный в пределах 20%, 15% или 5% от определенного предела. Под этим я подразумеваю, насколько первая производная отличается от средней производной всего линейного диапазона, например. Из-за некоторой проблемы с настройкой моя кривая имеет "пилообразное" поведение, и это не позволяет мне выполнять то, что я только что описал, потому что очень часто у меня есть отрицательная производная...
В заключение, существует ли простой способ получить подгонку только линейной части и понять, в каких пределах (5%,10%,15%...) моя кривая соответствует подгонке? Должен ли я использовать только cftool и делать полиномиальную подгонку степени 1? В этом случае, однако, вся кривая установлена, но я хотел бы понять, что такое линейный диапазон... Я надеюсь, что мой вопрос и сомнения ясны.
Я полагаю, что есть какая-то функция, которую я ищу в Excel, называемая "линия тренда", но я действительно хочу использовать Matlab.
Любая помощь очень ценится! Як
1 ответ
Вы можете использовать функцию polyfit
чтобы соответствовать линии ваших данных. Функция вернет ваш уклон и y-перехват. Поскольку линейный график переводится в постоянную 1-ю производную, вы можете посмотреть наклон своей 1-й производной (2-й производной) и посмотреть, где он отклоняется от нуля, чтобы обозначить конец вашего линейного тренда. Это может быть сложно, учитывая количество шума в ваших данных.
Однако будьте осторожны, потому что дифференцирование данных с шумом часто может увеличить отношение сигнал / шум. MATLAB предоставляет некоторую полезную документацию по дифференцированию сигнала без усиления шума здесь.