Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

[Matlab] Numerical Code for the NLS equation

  1. Nov 13, 2013 #1
    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
    %-- plot input pulse shape and 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');
    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
    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

    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. jcsd
  3. Nov 14, 2013 #2


    User Avatar
    Science Advisor
    Gold Member

    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.
  4. Nov 16, 2013 #3
    no i am trying to run it in matlab2010 does it make any difference between different editons
  5. Nov 16, 2013 #4
    thats the exact error that is given to me

    ??? 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)= ');
  6. Nov 16, 2013 #5


    User Avatar
    Science Advisor
    Gold Member

    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.
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Similar Threads - Matlab Numerical Code Date
I don't get a reasonable output for my code? Mar 18, 2017
Matlab Is MATLAB better for numerical simulation Jan 16, 2017
Matlab Finite difference numerical integration or ode45? May 17, 2016
Matlab Numerical integration May 7, 2016
Mathematica Numerical vs. Monte-Carlo Simulations May 2, 2016