How to get X and Y points (or function(s)) from a plotted line
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Addison Collins
le 16 Août 2021
Commenté : Addison Collins
le 17 Août 2021
Hello all,
So I have a instrument that provides a handful of X and Y points based up on bins from a histogram. I plotted the graphs in matlab and would like a way to pull points from curve that were not in the original vector of points used to plot.
Is there a way I can pull a set amount of points from the line (say 1000 or so) or to pull a function?
I am aware of the function getpoints, but it only pulls points that were use in the plot to begin with (as far as I know). I have attached example code. I would like to have more points than just the ones I input, so I wanted to pull them from the curve fitted to the inputted points.

clear;clc;close all
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Set plot stuff:
set(0,'DefaultLineLineWidth',1.5)
set(0,'DefaultLineMarkerSize',15)
set(0,'DefaultAxesFontSize',20)
set(0,'DefaultFigureColor',[1,1,1])
set(0,'DefaultTextFontSize',18)
set(0,'DefaultTextFontName','Times-Roman')
set(0,'DefaultAxesFontName','Times-Roman')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
type = '3-6 µm';
experiment = 'base';
class = 'Small';
%% Base PSD
xData = [0 0.4 0.8 1.2 1.6 2 2.4 2.8 3.2 3.6 4 4.4 4.8 5.2 5.6 6 6.4 6.8 7.2 7.6 8 8.4 8.8 9.2 9.6 10 10.4 10.8 11.2 11.6 12 12.4 12.8 13.2 13.6 14 14.4 14.8 15.2 15.6 16 16.4 16.8 17.2 17.6 18 18.4 18.8 19.2 19.6 20];
p3_base = [0 0.019 0.035 0.153 0.32 0.63 1.112 1.823 2.722 3.61 4.309 4.737 4.937 4.941 4.876 4.891 5.051 5.221 5.274 5.146 4.877 4.469 3.989 3.485 3.004 2.558 2.149 1.8 1.484 1.218 0.987 0.795 0.637 0.513 0.42 0.346 0.283 0.233 0.194 0.16 0.133 0.117 0.1 0.082 0.074 0.056 0.054 0.045 0.043 0.038 0.036];
yData = p3_base;
sizes = [];
tic
for i = 1:length(yData)
for j = 1:(yData(i)*1000)
sizes = [sizes xData(i)];
end
end
toc
%% q3 PSD
fig2 = figure('Renderer', 'painters', 'Position', [1300 10 947 900]);
plot(xData,smooth(q3_base),'color','black');
% daspect([1 1 1])
% title('3-6 µm Base PSD PDF')
title([class,' Glass Microspheres Base PSD PDF'])
xlabel('Particle diameter (µm)')
ylabel('Probability Density (%/µm)')
0 commentaires
Réponse acceptée
KSSV
le 17 Août 2021
yData = smooth(q3_base) ;
% Interpolation
m = 100 ; % change this for required number of points
xi = linspace(min(xData),max(xData),m) ;
yi = interp1(xData,yData,xi) ;
plot(xData,YData,'b',xi,yi,'.r');
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Data Exploration dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!