How can i make envelope cover first half peak at origin?
2 ビュー (過去 30 日間)
古いコメントを表示
How can i get the envelope to cover the first maxima at x=0. Here is the code.
fluxQuantum = 2.06783383E-15;
lambda = 90E-9;
L = 500E-9; w = 500E-9; d = 10E-9; N = 500;
k = 2*pi*(2*lambda+d)/fluxQuantum;
J0 = 1E7;
theta=0
pulse = @(t,a)(heaviside(t+a) - heaviside(t-a));
J1 = @(x,y) J0*pulse(x,L/2)*pulse(y,w/2);
Bwidth=0.15;
N=500;
n=91;
B = linspace(-1,Bwidth,N);
Ic_max = zeros(size(B));
Bwidth = 0.15;
c = cosd(theta);
s = sind(theta);
B = linspace(0,Bwidth,N);
By = c*B;
Bx = s*B;
kx = k*By; ky = k*Bx;
for i=1:N
% Ix(i) = integral(@(y)(J1(xvec(i),y)*exp(-1j*ky(i)*y)),-w/2,w/2,'ArrayValued',true);
f = @(x)integral(@(y)(J1(x,y).*exp(-1j*ky(i)*y)),-w/2,w/2,'ArrayValued',true);
Ic_max(i) = abs(integral(@(x)f(x).*exp(1j*kx(i)*x),-L/2,L/2));%,'ArrayValued',true);
end
[up,lo]= envelope(Ic_max,10,'peak');
plot(up)
hold on
plot(Ic_max)
0 件のコメント
採用された回答
Star Strider
2019 年 7 月 9 日
The envelope function apparently does not recognise the centre peak as a peak, since it is at one end of the sequence.
You can get around that limitation and calculate the envelope of the centre peak if you give envelope the complete sequence to work with, or at least a sequence that does not begin with the centre peak.
This requires slightly tweaking your code:
<... PREVIOUS CODE ...>
B = linspace(-Bwidth,Bwidth,N*2);
By = c*B;
Bx = s*B;
kx = k*By; ky = k*Bx;
for i=1:numel(B)
% Ix(i) = integral(@(y)(J1(xvec(i),y)*exp(-1j*ky(i)*y)),-w/2,w/2,'ArrayValued',true);
f = @(x)integral(@(y)(J1(x,y).*exp(-1j*ky(i)*y)),-w/2,w/2,'ArrayValued',true);
Ic_max(i) = abs(integral(@(x)f(x).*exp(1j*kx(i)*x),-L/2,L/2));%,'ArrayValued',true);
end
[up,lo]= envelope(Ic_max,10,'peak');
plot(up(B>=0))
hold on
plot(Ic_max(B>=0))
to produce:
Many MATLAB functions (such as findpeaks) also do not consider the end values of a vector in their calculations, so the coding that calls them must take this into account.
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!