Register to reply 
[Matlab] Numerical Code for the NLS equation 
Share this thread: 
#1
Nov1313, 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 superGaussian ='); 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/21)*dtau; % temporal grid omega=(pi/Tmax)*[(0:nt/21)*(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 


#2
Nov1413, 05:10 AM

Sci Advisor
PF Gold
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. 


#3
Nov1613, 01:22 AM

P: 102

no i am trying to run it in matlab2010 does it make any difference between different editons



#4
Nov1613, 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)= '); 


#5
Nov1613, 08:34 AM

Sci Advisor
PF Gold
P: 1,841

It looks like the problem is that instead of using the builtin "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 timeindependent 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 