Register to reply

[Matlab] Numerical Code for the NLS equation

by queenstudy
Tags: code, equation, matlab, numerical
Share this thread:
queenstudy
#1
Nov13-13, 07:39 PM
P: 102
hello
i just copied the Numerical Code for the NLS equation which is the following:
%---specify input parameters
clear all;
distance=input('enter fiber length(in units of L_D)=');
beta2=input(' dispersion: 1 for normal, -1 for anomalous');
N=input('Nonlinear parameter N=');
mshape=input('m=0 for sech , m>0 for super-Gaussian =');
chirp0=0; % input pulse chirp
%--- set stimulation parameters
nt=1024; Tmax=32; % FFT points and window size
step_num=round(20*distance*N^2); % number of z steps
deltaz=distance/step_num; % step size in tau
%--- tau and omega arrays
tau=(-nt/2:nt/2-1)*dtau; % temporal grid
omega=(pi/Tmax)*[(0:nt/2-1)*(-nt/2 :-1)];% frequency grid
%--- input field profile
if mshape==0
uu= sech(tau)*exxp(-0.5i*chirp0*tau.^2); %soliton
else %super Gaussian
uu=exp((-0.5*(1+1i*chirp0)*tau.^(2*mshape)));
end
%-- plot input pulse shape and spectrum
temp=fftshift(ifft(uu)).*(nt*dtau)/sqrt(2*pi);%spectrum
figure; subplot(2,1,1);
plot(tau,abs(uu).^2,'--k');hold on;
axis([-5 5 0 inf]);
xlabel('normalized time');
yalebl('normalized power');
title('input and output pulse shape and spectrum');
subplot(2,1,2);
plot(fftshift(omega)/(2*pi),abs(temp).^2,'--k');hold on;
axis([-.5 .5 0 inf]);
xlabel('normalized frequency');
ylabel('spectral power');
%---store dispersive phase shifts to speedup code
dispersion=exp(1i*0.5*beta2*omega.^2 *deltaz);%phase factor
hhz=1i*N^2*deltaz; % nonlinear phase factor
%******[beginning of main loop]****
%scheme:1/2N -> D-> 1/2N; first half step nonlinear
temp=uu.*exp(abs(uu).^2.*hhz/2); %note hhz/2
for n=1:step_num
f_temp=ifft(temp).*dispersion;
u=fft(f_temp);
temp=uu.*exp(abs(uu).^2.*hhz);
end
uu=temp.*exp(-abs(uu).^2.*hhz/2); % final field
temp=fftshift(ifft(uu)).*(nt*dtau)/sqrt(2*pi);%final spectrum
%*****[end of main loop]********

%----- plot output pulse shape and spectrum
subplot(2,1,1)
plot(tau,abs(uu).^2,'-k')
subplot(2,1,2)
plot(fftshift(omega)/(2*pi),abs(temp).^2,'-k')


and as syntax there no mistake but when i wanted to run it they told me the following error:

Error in ==> Untitlednls at 3
distance= input('enter fiber length(in units of L_D)=');
what should i do even though i just copied it
Phys.Org News Partner Science news on Phys.org
Sapphire talk enlivens guesswork over iPhone 6
Geneticists offer clues to better rice, tomato crops
UConn makes 3-D copies of antique instrument parts
f95toli
#2
Nov14-13, 05:10 AM
Sci Advisor
PF Gold
f95toli's Avatar
P: 2,241
I just copied and pasted the code in your post, and I don't get the same error as you, line 3 works fine.

However, I do get other errors; dtau is not defined, the line where the frequency grid is defined (line 14) is not working because the (I assume) there is a dot missing in front of the "*"

Hence, the code as is does not work.

I am using Matlab 2012b

Edit: Btw, I just realized that the error message you posted does not look like Matlab. Are you trying to run this in Python using scipy?
If so I don't think it will work without some modifications.
queenstudy
#3
Nov16-13, 01:22 AM
P: 102
no i am trying to run it in matlab2010 does it make any difference between different editons

queenstudy
#4
Nov16-13, 01:25 AM
P: 102
[Matlab] Numerical Code for the NLS equation

??? Attempt to execute SCRIPT input as a function:
C:\Users\Abd Lebnen\Documents\MATLAB\input.m

Error in ==> leboz at 3
distance= input('enter fiber length (in units of L_D)= ');
DrGreg
#5
Nov16-13, 08:34 AM
Sci Advisor
PF Gold
DrGreg's Avatar
P: 1,843
Quote Quote by queenstudy View Post
??? Attempt to execute SCRIPT input as a function:
C:\Users\Abd Lebnen\Documents\MATLAB\input.m

Error in ==> leboz at 3
distance= input('enter fiber length (in units of L_D)= ');
If only you'd given the full error message before!

It looks like the problem is that instead of using the built-in "input" function, it's trying to use the contents of "C:\Users\Abd Lebnen\Documents\MATLAB\input.m" instead. You need to rename that file or move it somewhere else where MATLAB won't find it.


Register to reply

Related Discussions
Please I need a Help with matlab code (Controlling the LEGO NXT Using MatLab) Math & Science Software 5
Matlab code for time-independent schrodinger equation Quantum Physics 0
Numerical integration - optimisation of code General Math 4
C code numerical methods Programming & Computer Science 7
Help in optimizing code: numerical methods General Math 0