本帖最后由 1566666 于 2020-8-19 13:51 编辑
我有一个画静态图的代码,画了一张图(图二),我让delay的第二个元素可以变化,并且动态显示出来,结果只有第一帧是和原来差不多,后面的图(图一)全和原来的有点不同,看了半天也没看出来是有什么问题啊啊啊啊啊啊啊
静态图代码
clc
clear
units;
u0 = 4*pi*(10^-7);
c = 299792458*m/s;
t=-100*fs:0.0001*fs:100*fs;
deg = pi/180;
freq = [c/(1950*nm),c/(1350*nm)];
fai = [-180 270]*deg; %调节CEP
duration = [30,30]*fs; %调节脉宽
delay = [0,1.13]*fs; %调节延时
I=[2.9*10^14 5*10^13]; %调节光强
X= zeros(size(t));
for index = 1:length(freq)
freq_temp = freq(index);
fai_temp = fai(index);
duration_temp = duration(index);
delay_temp = delay(index);
I_temp = I(index);
X = X+ 100*sqrt(2*I_temp*u0*c)*exp(-2*log(2)*((t-delay_temp)./duration_temp).^2).*cos(2*pi*freq_temp*(t-delay_temp)+fai_temp);
end
I=(abs(X)).^2;
I=I/max(I);
plot(t/(6.5*fs),I,'r-','DisplayName','two color','LineWidth',2);
xlabel('Time/cycle(6.5fs)','FontSize',14);
ylabel('E^2','FontSize',14);
xlim([-4 4]);
hold on
X1=100*sqrt(2*(2.9*10^14)*u0*c)*exp(-2*log(2)*((t)./(7.93*fs)).^2).*cos(2*pi*(c/(1.7*um))*(t));
I1=(abs(X1)).^2;
I1=I1/max(I1);
%plot(t/(6.5*fs),I1,'k-','DisplayName','1.4-cycle at 1.7 um','LineWidth',2)
hold off
hold on
np = 100;
[up,lo] = envelope(I,np,'peak');
plot(t/(6.5*fs),up,'g-','DisplayName','envelope of two color','LineWidth',2);
hold off
legend
fwhm = fwhmax(t/(6.5*fs),up);
fprintf('中心脉冲的半高全宽为 %5.4f cycle\n',fwhm);
然后动态的
clc
clear
units;
u0 = 4*pi*(10^-7);
c = 299792458*m/s;
t=-100*fs:0.0001*fs:100*fs;
deg = pi/180;
freq = [c/(1950*nm),c/(1350*nm)];
fai = [-180 270]*deg; %调节CEP
duration = [30,30]*fs; %调节脉宽
I=[2.9*10^14 5*10^13]; %调节光强
delay=input('请输入第二束脉冲的延时范围,带单位(示例:[-5:0.01:5]*fs):\n');
n=length(delay);
fwhm = zeros(size(delay));
for index1 = 1:n
X= zeros(size(t));
delay_temp = delay(index1);
delay1=[0 delay_temp];
for index = 1:length(freq)
freq_temp = freq(index);
fai_temp = fai(index);
duration_temp = duration(index);
delay1_temp = delay1(index);
I_temp = I(index);
X = X+ 100*sqrt(2*I_temp*u0*c)*exp(-2*log(2)*((t-delay1_temp)./duration_temp).^2).*cos(2*pi*freq_temp*(t-delay1_temp)+fai_temp);
end
I=(abs(X)).^2;
I=I/max(I);
plot(t/(6.5*fs),I,'r-','DisplayName','two color','LineWidth',2);
xlabel('Time/cycle(6.5fs)','FontSize',14);
ylabel('E^2','FontSize',14);
xlim([-4 4]);
hold on
np = 100;
[up,lo] = envelope(I,np,'peak');
plot(t/(6.5*fs),up,'g-','DisplayName','envelope of two color','LineWidth',2);
hold off
legend
fwhm_temp = fwhmax(t/(6.5*fs),up);
txt = {'delay(fs): ' num2str(delay_temp/fs),'fwhm(cycle):' num2str(fwhm_temp)};
text(2,0.8,txt)
drawnow
fwhm(index1)=fwhm_temp;
end
fwhm_min=min(fwhm);
k=find(fwhm==fwhm_min);
delay_min=delay(k)/fs;
fprintf('输入的序列里fwhm的最小值为 %5.4f cycle\n',fwhm_min);
fprintf('此时对应的时间延迟为 %5.4f fs\n',delay_min);
按理说很简单啊,哭辽
1.13.jpg
(35.82 KB, 下载次数: 6)
2020-8-19 13:47 上传
动态截图的1.13
untitled6666.jpg
(40.2 KB, 下载次数: 6)
2020-8-19 13:47 上传
静态1.13