Azzera filtri
Azzera filtri

make my curve smooth

1 visualizzazione (ultimi 30 giorni)
fouad koudsi
fouad koudsi il 5 Ago 2019
Risposto: Star Strider il 6 Ago 2019
Hello,
Due to low sample rate my curve is not coming smooth, so I want to make it smooth
This is the code I am writting:
filename = 'All Data_10mm.xlsx';
%
sheet = '10 mm_1hz_0V_Test1'; % add sheet number
xlRange = 'B80:B101'; % X range
ylRange = 'E80:E101'; % Y range
[Disp, text, raw]= xlsread(filename,sheet,xlRange);
[force, text, raw]= xlsread(filename,sheet,ylRange);
plot(Disp,force,'-r')
hold all
grid on
grid minor
  2 Commenti
Rik
Rik il 5 Ago 2019
Have you looked at the spline function?
Adam Danz
Adam Danz il 5 Ago 2019
Modificato: Adam Danz il 5 Ago 2019

Accedi per commentare.

Risposta accettata

Star Strider
Star Strider il 6 Ago 2019
This is as close as I can get to what you want:
filename = 'All Data_10mm.xlsx';
sheet = '10 mm_1hz_0V_Test1'; % add sheet number
xlRange = 'B80:B101'; % X range
ylRange = 'E80:E101'; % Y range
[Disp, text, raw]= xlsread(filename,sheet,xlRange);
[force, text, raw]= xlsread(filename,sheet,ylRange);
plot(Disp,force,'-r')
hold all
grid on
grid minor
[minx,idx1] = mink(Disp,3);
[maxx,idx2] = maxk(Disp,2);
idxv = sort([idx1; idx2]);
for k = 1:numel(idxv)-1
xi = [idxv(k), idxv(k+1)];
Dispv(k,:) = linspace(Disp(xi(1)), Disp(xi(2)), 150);
% qx = Disp(xi(1):xi(2))
% qy = force(xi(1):xi(2))
forcev(k,:) = interp1(Disp(xi(1):xi(2)), force(xi(1):xi(2)), Dispv(k,:), 'pchip');
end
figure
plot(Dispv', forcev')
grid
title('‘pchip’ Interpolation')
producing:
make my curve smooth - 2019 08 05.png
Feel free to experimant with it.

Più risposte (0)

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by