сглаживание 2D-графика в MATLAB
Мой вопрос, как я могу его сгладить? Не нашел способа сделать то, что я хочу в документации.
person Seatless schedule 20.05.2013 source источник
Ответы (2)
Возможно, вы могли бы использовать spline следующим образом
x1 = 0:.1:25; y1 = spline(x,y,x1); plot(x,y,x1,y1);
person fpe schedule 20.05.2013
Это то, что я искал. Спасибо. — person Seatless; 20.05.2013
Обратите внимание, что это НЕ сглаживает, как вы просили. — person ; 20.05.2013
Вы можете использовать кубический сглаживающий сплайн
p = 1e-2; % initialize smoothing constant fn = csaps(x, y, p); % get ppform of the cubic smoothing spline y1 = ppval(fn, x); % evaluate piecewise polynomial
Для сравнения:
plot(x,y); hold on; plot(x, y1, '-r');
person fnery schedule 20.05.2013
Да. Это один хороший вариант. Можно также просто сделать размытие по Гауссу, используя conv для выполнения этой работы. — person ; 20.05.2013
Следует отметить, что csaps требует установки Curve Fitting Toolbox. — person Eitan T; 20.05.2013
Как сгладить график из малого числа точек и нанести на него эти точки?
Нанести точки на график
Здраствуйте) у меня такой вопрос. есть программа, которая определяет попадание точек в заданную.
Как сгладить график функции?
Помогите сделать график более гладким. figure(2) y2=2*log(x).*sin(x); plot(x,y2,’b’), grid.

Сформировать массив их 120 эл-тов. Найти все простые числа. Построить график и нанести на числовую ось.
Сформировать с помощью функции RND массив их 120 элементов. Найти все простые числа. Построить.
Как сгладить график построенный по точкам в Mathcad Prime
Помогите научиться сглаживать графики в Mathcad Prime.
5236 / 3564 / 378
Регистрация: 02.04.2012
Сообщений: 6,471
Записей в блоге: 17

Сообщение было отмечено как решение
Решение
Чтоб нанести точки нужно указать в plot тип маркера точек:
plot(R,d,’or’) — линий не будет,а точки будут отображены красными кружками.
Можно вместо «o» написать «.», «*» и много чего еще, чего я не помню но есть в help-е
Чтобы сделать сглаживание пожалуй можно применить spline-интерполяцию:
1 2 3 4 5 6 7
clear, clc R = [0 75 200 300 430]; d = [8.5 16 29.7 63.7 79.6]; x = linspace(min(R),max(R),100); y = spline(R,d,x); % кажется так plot(R,d,'or', x,y,'-b') grid on
Как в Scilab 5.5.2 сгладить график?
А как конкретно нужно сгладить? Интерполяция (гладкий график проходит через все точки) или регрессия под конкретную гладкую функцию (параболу, экспоненту итд)?
11 июн 2015 в 8:02
Первый вариант «Интерполяция (гладкий график проходит через все точки)».
11 июн 2015 в 8:07
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
В Scilab есть подходящая функция interp1, аналогичная функции matlab:
x=[1 9 15 23 30 35]; y=[4 66 19 43 24 33]; xp=linspace(0,35,100); [yp]=interp1(x, y, xp, 'spline');
Отслеживать
ответ дан 11 июн 2015 в 8:17
Dmitry Grigoryev Dmitry Grigoryev
135 7 7 бронзовых знаков
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.21.1314
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Форум MATLAB и Simulink

Собственно суть проблемы — есть некая программа, выдающая подобные графики:
Графики вычисляются с определенной точностью. В данном случае по горизонтали точность 0.5, по вертикали тоже (задаются точности независимо). Т.е. это не просто значения функции от аргумента с определенным шагом, а еще и само значение получено с неким «округлением».
Требуется сгладить график. Повышать точность нежелательно, т.к. каждая точка расчитывается несколько секунд. Нужен алгоритм, который позволит получить новые значения на основе старых, которые дадут более гладкий график.
Проблема здесь в том, что всяческие методы интерполяции пытаются провести гладкую линию через существующие точки, а мне же нужно, чтобы линия могла «гулять» от точек не выходя за рамки заданной точности.
Я уже попробовал и фильтр применить, но т.к. не пользовался фильтрами раньше, то у меня не получается достичь нужного результата. Причем сам график сглаживается, но при этом пытается выйти из «нуля», а не из заданного начального значения (наверно так и работают реальные фильтры, но это не подходит для моей задачи).
Помогите мне, пожалуйста, если есть какой-либо метод выполнить такое сглаживание.
