1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
| %% 全局变量&命令 clc %清除命令窗口的内容,对工作环境中的全部变量无任何影响 clear %清除工作空间的所有变量 close all %关闭所有的Figure窗口 format short format compact
StepLength=0.013; axis_ymax_1=1; text_dy=0.05; TwoTheta=cell(6,1); PeakPosition=cell(6,1); C1=cell(5,2); C2=cell(6,5,3); %生成一个6*5*3的元胞数组,意义见草稿纸 PeakPosition_temp=zeros(3,3); %生成一个3行3列的零矩阵,用于暂时存储峰的位置,三列分别表示角度,强度(绝对值), 强度(相对值) %读取第i种实验条件下,各个峰形分布的角度信息 for i=1:6 TwoTheta{i,1}=load(['TwoTheta_', i, '.txt'); end % 上述循环等价于 % TwoTheta{1,1}=load('TwoTheta_1.txt'); % TwoTheta{2,1}=load('TwoTheta_2.txt'); % TwoTheta{3,1}=load('TwoTheta_3.txt'); % TwoTheta{4,1}=load('TwoTheta_4.txt'); % TwoTheta{5,1}=load('TwoTheta_5.txt'); % TwoTheta{6,1}=load('TwoTheta_6.txt');
for i=1:6 %这里有6种情形,每一种情形要找5条曲线出来 X_err_temp=TwoTheta{i,1} X_err=X_err_temp(6,1); %//temp第1行分别表示第1个峰的开始角度,结束角度,数据个数 %//temp第2行分别表示第2个峰的开始角度,结束角度,数据个数 %//temp第3行分别表示第3个峰的开始角度,结束角度,数据个数 %//temp第4行分别表示背底的开始角度,结束角度,数据个数 %//temp第5行分别表示整体的开始角度,结束角度,数据个数 %//temp第6行第一列数据为: 矫正角度(正数表示数据需要整体右移,负数表示左移),其他三列都是0,用于充数,实现矩阵完整性。
switch i case 1 %这里可以用一个跟前面相似的循环优化,下面也是,哎,一开始存数据的时候没命名好,就先就这样吧 C1{1,1}=load('Fitted_1_1.1.txt'); C1{1,2}=load('Fitted_1_1.2.txt'); C1{2,1}=load('Fitted_1_2.1.txt'); C1{2,2}=load('Fitted_1_2.2.txt'); C1{3,1}=load('Fitted_1_3.1.txt'); C1{3,2}=load('Fitted_1_3.2.txt'); C1{4,1}=load('Fitted_1_bg_1.txt'); C1{4,2}=load('Fitted_1_bg_2.txt'); C1{5,1}=load('Fitted_1_total_1.txt'); C1{5,2}=load('Fitted_1_total_2.txt') ; case 2 C1{1,1}=load('Fitted_2_1.1.txt'); C1{1,2}=load('Fitted_2_1.2.txt'); C1{2,1}=load('Fitted_2_2.1.txt'); C1{2,2}=load('Fitted_2_2.2.txt'); C1{3,1}=load('Fitted_2_3.1.txt'); C1{3,2}=load('Fitted_2_3.2.txt'); C1{4,1}=load('Fitted_2_bg_1.txt'); C1{4,2}=load('Fitted_2_bg_2.txt'); C1{5,1}=load('Fitted_2_total_1.txt'); C1{5,2}=load('Fitted_2_total_2.txt') ; case 3 C1{1,1}=load('Fitted_3_1.1.txt'); C1{1,2}=load('Fitted_3_1.2.txt'); C1{2,1}=load('Fitted_3_2.1.txt'); C1{2,2}=load('Fitted_3_2.2.txt'); C1{3,1}=load('Fitted_3_3.1.txt'); C1{3,2}=load('Fitted_3_3.2.txt'); C1{4,1}=load('Fitted_3_bg_1.txt'); C1{4,2}=load('Fitted_3_bg_2.txt'); C1{5,1}=load('Fitted_3_total_1.txt'); C1{5,2}=load('Fitted_3_total_2.txt') ; case 4 C1{1,1}=load('Fitted_4_1.1.txt'); C1{1,2}=load('Fitted_4_1.2.txt'); C1{2,1}=load('Fitted_4_2.1.txt'); C1{2,2}=load('Fitted_4_2.2.txt'); C1{3,1}=load('Fitted_4_3.1.txt'); C1{3,2}=load('Fitted_4_3.2.txt'); C1{4,1}=load('Fitted_4_bg_1.txt'); C1{4,2}=load('Fitted_4_bg_2.txt'); C1{5,1}=load('Fitted_4_total_1.txt'); C1{5,2}=load('Fitted_4_total_2.txt') ; case 5 C1{1,1}=load('Fitted_5_1.1.txt'); C1{1,2}=load('Fitted_5_1.2.txt'); C1{2,1}=load('Fitted_5_2.1.txt'); C1{2,2}=load('Fitted_5_2.2.txt'); C1{3,1}=load('Fitted_5_3.1.txt'); C1{3,2}=load('Fitted_5_3.2.txt'); C1{4,1}=load('Fitted_5_bg_1.txt'); C1{4,2}=load('Fitted_5_bg_2.txt'); C1{5,1}=load('Fitted_5_total_1.txt'); C1{5,2}=load('Fitted_5_total_2.txt') ; case 6 C1{1,1}=load('Fitted_6_1.1.txt'); C1{1,2}=load('Fitted_6_1.2.txt'); C1{2,1}=load('Fitted_6_2.1.txt'); C1{2,2}=load('Fitted_6_2.2.txt'); C1{3,1}=load('Fitted_6_3.1.txt'); C1{3,2}=load('Fitted_6_3.2.txt'); C1{4,1}=load('Fitted_6_bg_1.txt'); C1{4,2}=load('Fitted_6_bg_2.txt'); C1{5,1}=load('Fitted_6_total_1.txt'); C1{5,2}=load('Fitted_6_total_2.txt') ; end for j=1:5 %[1]角度分布 X_temp=TwoTheta{i,1} X_begin=X_temp(j,1)+X_err; X_end=X_temp(j,2)+X_err; X=X_begin:StepLength:X_end; C2{i,j,1}=X; %[2]强度分布(绝对值) Y_1=C1{j,1}; Y_2=C1{j,2}; Y=MultiLineIntoOne(Y_1,Y_2); C2{i,j,2}=Y; %[3]峰的坐标(绝对值)(只找前三个峰,故i<=3) if j<=3 Y_max=max(Y); [m,n]=find(Y==max(Y_max)); m=round(median(m)); %Y是行向量,m自然是1 n=round(median(n)); %Y_max在Y中的序数,并取中位数,以应对连续相同的最大值;下同 TwoTheta_j=X(1,n); %这个地方一开始直接用的TwoTheta,导致覆盖了之前的矩阵TwoTheta,所以出错!命名要小心! Intensity_j=Y(1,n); PeakPosition_temp(j,:)=[TwoTheta_j Intensity_j 0]; end end PeakPosition{i,1}=PeakPosition_temp; %[3] %强度分布(相对值) F=0.9/PeakPosition_temp(3,2); C2{i,1,3}=F*C2{i,1,2}; C2{i,2,3}=F*C2{i,2,2}; C2{i,3,3}=F*C2{i,3,2}; C2{i,4,3}=F*C2{i,4,2}; C2{i,5,3}=F*C2{i,5,2}; %峰强度归一(相对值) for k=1:3 PeakPosition_temp(k,3)=F*PeakPosition_temp(k,2); end PeakPosition{i,1}=PeakPosition_temp; %% 【画峰形】 f=figure(i); plot(C2{i,1,1},C2{i,1,2},'Linewidth',5,'Color',[0,150,71]/255) hold on plot(C2{i,2,1},C2{i,2,2},'Linewidth',5,'Color',[246,179,11]/255) hold on plot(C2{i,3,1},C2{i,3,2},'Linewidth',5,'Color',[228,29,37]/255) hold on plot(C2{i,4,1},C2{i,4,2},'Linestyle','--','Linewidth',1,'Color','k') hold on plot(C2{i,5,1},C2{i,5,2},'Linestyle','-.','Linewidth',2,'Color','k') %【添加峰的指示线】 for k=1:3 hold on plot([PeakPosition_temp(k,1) PeakPosition_temp(k,1)],[0 PeakPosition_temp(k,2)],'b','Linestyle','--') end %【坐标设置】 set(gca,'Xlim',([35 46]),'Fontname','Arial','Fontsize',25); set(gca,'Ylim',([0 2000]),'Fontname','Arial','Fontsize',25); %【图片设置】 set(f,'units','normalized','position',[0 0 0.7 0.9]); set(gca,'units','normalized','Position',[.15 .15 .75 .75]); %【标注设置】 fs=40; xlabel('2\Theta(degree)','Fontname','Arial','Fontsize',fs) ylabel('Intensity(relative value)','Fontname','Arial','Fontsize',fs) % title('XRD of [V-Cu-Nb-Cu][h=48nm L=576nm][RT 6E16]','Fontname','Times','Fontsize',fs_1)
fs=30; text(PeakPosition_temp(1,1),PeakPosition_temp(1,2)+text_dy,'Nb(110)','Fontname','Arial','fontsize',fs,'color',[0,150,71]/255); text(PeakPosition_temp(2,1),PeakPosition_temp(2,2)+text_dy,'V(110)','Fontname','Arial','fontsize',fs,'color',[246,179,11]/255); text(PeakPosition_temp(3,1),PeakPosition_temp(3,2)+text_dy,'Cu(111)','Fontname','Arial','fontsize',fs,'color',[228,29,37]/255); a=get(gca); x=a.XLim; %获取横坐标上下限 y=a.YLim; %获取纵坐标上下限 k=[0.05 0.9]; %给定text相对位置 x0=x(1)+k(1)*(x(2)-x(1)); %获取text横坐标 y0=y(1)+k(2)*(y(2)-y(1)); %获取text纵坐标 text(x0,y0,'(b) 48nm 6E16 RT','Fontname','Arial','fontsize',40,'color','k');
legend({'Nb','V','Cu','Overall','Background'},'Fontname','Arial','fontsize',30,'location',[0.2475 0.55 0.2 0.2]) %【存图】 saveas(f,strcat(num2str(i),'.tif')); % %如果存的时候就要命名完整的话,采用如下 % switch i % case 1 % saveas(f,strcat(num2str(i),'.tif')); % case 2 % imwrite(f,strcat('V-Cu-Nb-Cu',num2str(i),'.tif')); % end end
|