%% 本文件用于标定实验数据,建立实际数据与检测像素之间的关系。
% 作者:德赛法
% 时间: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; % 计时结束