Borrar filtros
Borrar filtros

how to use spline for a fig. file?

3 visualizaciones (últimos 30 días)
Sajid Sarwar
Sajid Sarwar el 3 de Jul. de 2019
Comentada: Sajid Sarwar el 3 de Jul. de 2019
Can I use spline to smooth the plot in attached file?

Respuesta aceptada

Star Strider
Star Strider el 3 de Jul. de 2019
Editada: Star Strider el 3 de Jul. de 2019
Try this:
I = openfig('fft scma 25.fig');
Ax = gca;
lgnd = Ax.Legend;
Lines = findobj(Ax,'Type','line');
N = 5; % Interpolation Points Length Multiplication
for k = 1:numel(Lines)
X(k,:) = Lines(k).XData;
Y(k,:) = Lines(k).YData;
xq(k,:) = linspace(min(X(k,:)),max(X(k,:)), numel(X(k,:))*N); % Interpolation Points Vector
ys(k,:) = spline(X(k,:),Y(k,:),xq(k,:)); % Spline Fit To Data
end
figure
semilogy(xq', ys')
grid
legend(Ax.Legend.String)
xlabel(Ax.XLabel.String)
ylabel(Ax.YLabel.String)
Change ‘N’ to get the result you want.
This is essentially the same as my previous code, this time doing a spline interpolation.
EDIT —
Corrected typographical error. Code unchanged.

Más respuestas (1)

Walter Roberson
Walter Roberson el 3 de Jul. de 2019
Ninterp = 10;
Nplot = 100;
fig = openfig('fft scma 25.fig');
Lines6to1 = findobj(fig, 'type', 'line');
for idx = 1 : length(Lines6to1)
h = Lines6to1(idx);
xd = get(h, 'XData');
yd = get(h, 'YData');
x = linspace(min(xd), max(xd), Ninterp);
y = interp1(xd, yd, x, 'spline');
xx = linspace(min(xd), max(xd), Nplot);
yy = spline(x, y, xx);
set(h, 'XData', xx, 'YData', yy);
end

Categorías

Más información sobre Splines en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by