MATLAB по умолчанию использует аппроксимацию прямой линии, чтобы сделать свой график между контрольными точками. Если вы хотите, вы можете интерполировать между точками, чтобы создать более реалистичный график. Попробуйте использовать interp1
с опцией 'spline'
и посмотрите, как это происходит. Таким образом, выведите минимальные и максимальные значения как X1
, так и X2
, затем определите сетку точек между минимумом и максимумом, которые имеют более тонкую детализацию. Как только вы сделаете это, бросьте это в interp1
и постройте свою кривую. Что-то вроде:
%// Find dynamic range of domain for both Xs
minX1 = min(X1);
maxX1 = max(X1);
minX2 = min(X2);
maxX2 = max(X2);
%// Generate grid of points for both Xs
x1Vals = linspace(minX1, maxX1, 100);
x2Vals = linspace(minX2, maxX2, 100);
%// Interpolate the curves
y1Vals = interp1(X1, Y1, x1Vals, 'spline');
y2Vals = interp1(X2, Y2, x2Vals, 'spline');
%// Plot the results
plot(x1Vals,y1Vals,'--rs',x2Vals,y2Vals,'-*g');
linspace
генерирует сетку точек от одного конца к другому, и я указал 100 из этих точек. Затем я использую interp1
так, как мы говорили о том, где вы указываете контрольные точки (X1,Y1,X2,Y2
), затем укажите значения, с которыми я хочу интерполировать. Я использую выходные значения после интерполяции и рисую кривую.
'plot' всегда объединяет данные с прямыми линиями. Обычная prodecure - иметь точки данных так близко друг к другу, что вы не заметите –
Я написал для вас ответ. Вам нужна дополнительная помощь? – rayryeng