%% 本文件用於標定實驗數據,建立實際數據與檢測像素之間的關係。
% 作者:德賽法
% 時間: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; % 計時結束