Effacer les filtres
Effacer les filtres

how to use spline for a fig. file?

3 vues (au cours des 30 derniers jours)
Sajid Sarwar
Sajid Sarwar le 3 Juil 2019
Commenté : Sajid Sarwar le 3 Juil 2019
Can I use spline to smooth the plot in attached file?

Réponse acceptée

Star Strider
Star Strider le 3 Juil 2019
Modifié(e) : Star Strider le 3 Juil 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.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 3 Juil 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

Community Treasure Hunt

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

Start Hunting!

Translated by