2016-11-19 7 views
0

Я создал плоскую кусочную кривую biarc в MATLAB, используя функцию rscvn. Я был в состоянии построить его следующим образом:Оценка квадратичной rBform MATLAB

p = [0 1 2 3; 2 6 3 9]; 
B = rscvn(p) 
fnplt(B) 
hold on 
scatter([0 1 2 3],[2 6 3 9]); 
hold off 

К сожалению, я не могу за жизнь мне понять, как оценить функцию B для произвольной позиции, скажем 2.6.

Как это сделать в MATLAB?

ответ

0

Вы можете оценить функцию из панели инструментов для подбора кривой с помощью функции fnval.

См https://www.mathworks.com/help/curvefit/fnval.html

Пример кода

p = [0 1 2 3; 2 6 3 9]; 
B = rscvn(p); 
fnval(B,2.6) 

Выход

ans = 

    1.8526 
    5.1884 

Редактировать Ваш комментарий и формат ваших данных я предполагаю, что вы на самом деле хотите оценить непрерывную функцию из ваших данных. В этом случае вы можете использовать.

p = [0 1 2 3; 2 6 3 9]; 
C = csapi(p(1,:), p(2,:)); 
fnplt(C) 
hold on 
scatter([0 1 2 3],[2 6 3 9]); 
hold off 

fnval(C,2.6) 

Выход

ans = 

    4.4960 
+0

В этом случае, то, что оба ответа означают? Я бы ожидал только одного решения ... – user3185748

+0

Ваш код вычисляет интерполяцию между точками (0,2), (1,6), (2,3), (3,9) по порядку. Функция оценки возвращает результат интерполяции между точками, где 'fnval (B, 0) = [0; 2]', 'fnval (B, 2) = [1; 6]', 'fnval (B, 4) = [2,3] ',' fnval (B, 6) = [3; 9] 'любой параметр вне диапазона [0,6] приведет к (0,0) (функция не экстраполируется). Поэтому, когда вы даете значение 2.6, оно вычисляет местоположение на кривой где-то между второй и третьей точками, то есть между (1,6) и (2,3). – jodag

+0

@ user3185748 Я сделал редактирование ответа в ожидании того, что вы ищете. – jodag

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

  • Нет связанных вопросов^_^