基於MATLAB中plot函數繪製曲線圖

 

%% 本文件用於標定實驗數據,建立實際數據與檢測像素之間的關係。
%   作者:德賽法
%   時間:20190415
%%% 初始化
tic;                                                                        % 計時開始
clc;clear;close all;                                                        % 清除命令行、空間變量,關閉figure
%%%
%%% 讀取數據到工作空間
filepath = ...
 'C:\Users\yashunxu\Desktop\旋轉液體實驗\Calculation20190413\ProcessImage';  % 路徑
filename1 = fullfile(filepath,'DetectedData.txt');                          % 檢測數據文件名
filename2 = fullfile(filepath,'RealData.txt');                              % 實際平面文件名
DetectedData = importdata(filename1);                                       % 導入檢測平面數據
RealData = importdata(filename2);                                           % 導入實際平面數據
x = DetectedData.data(1) - DetectedData.data;                               % 保存到x,注意!用初始值進行“減”是爲了轉換像素座標到實際座標
y = RealData.data - RealData.data(1);                                       % 保存到y
%%%
%%% 處理數據
p = polyfit(x,y,2);                                                         % 擬合二次係數
py = polyval(p,x);                                                          % 擬合數值
error = py - y;                                                             % 擬合誤差
%%%
%%% 數據可視化
figure;                                                                     % 打開figure
hold on;                                                                    % 保持figure,防止更新
% 繪圖參數初始化
LineSpec = {'-';'--';':';'-.'};                                             % 線型
MarkerSpec = {'+';'o';'*';'.';'x';'s';'d';'^';'v';'>';'<';'p';'h'};         % 標記類型
ColorSpec = {'r';'g';'b';'c';'m';'y';'k';'w'};                              % 顏色
LineWidth = 2;                                                              % 線寬
MarkerSize = 10;                                                            % 標記大小
                     
FontName = 'Times New Roman';                                               % 字體
TitleFontSize = 14;                                                         % 標題字號
XYLabelFontSize = 14;                                                       % 座標軸標註字號
LegendFontSize = 8;                                                         % 圖例字號
XYAxisFontSize = 12;                                                        % 座標軸字號
XTick = 0:20:220;                                                           % x座標軸間隔
YTick = -10:10:90;                                                          % y座標軸間隔
%
% 繪圖
plot(x,y,'*r','linewidth',LineWidth);
plot(x,py,'-g','linewidth',LineWidth);
plot(x,error,'ob','linewidth',LineWidth);
%
% 繪圖標題,數軸標註,圖例
title('M','fontname',FontName,'fontsize',TitleFontSize);
xlabel('DetecedData(pixel)','fontname',FontName,'fontsize',XYLabelFontSize);
ylabel('RealData(mm)','fontname',FontName,'fontsize',XYLabelFontSize);
legend('Detected','Fitting','Errors',...
    'fontname',FontName,'fontsize',LegendFontSize,'location','northwest');
%
% 座標軸範圍
set(gca,'FontSize',XYAxisFontSize,'xtick',XTick,'ytick',YTick);
axis([min(x),max(x),min(y)-10,max(y)+10]);
%
%%%
%%% 保存擬合係數到文件
save('p','p');
%%%
toc;                                                                        % 計時結束

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章