Nelson Numerical Software Versions Save

The Nelson Programming Language

v1.4.0

1 week ago

1.4.0 (2024-04-27)

Added

  • Python interface (part 2):

    • #1168 Run Python script file from Nelson.
    • #1141 Help about Managing Data between Python and Nelson.
    • #1149 python bytes, and bytearray types were not managed.
    • #1163 pyenv searchs python by version on Windows.
    • #1164 Embed python distribution on Windows.
    • #1167 Help about how to install Python package from Nelson.
    • numpy types support if numpy available.
    • pyenv: can use environment variables to set values.
  • getenv: Retrieve the values of several environment variables.

  • pyenv: can use environment variables to set values.

  • pyrun: Python code object allowed as first input argument.

  • nelson --without_python starts nelson without python engine.

  • skip_testsuite: allows to skip test suite dynamically on condition.

Changed

  • Allow to call method of a variable of CLASS/HANDLE type like a function (currently, only plugged for python subtype).
  • #1142 Github Actions updated.
  • #1157 Qt 6.7 support (used on Windows 64 bits binary).
  • copyfile, isfile, isdir, mkdir allow string array type as input.
  • warning about 'Matrix is singular to working precision' for inv matrix.
  • tests webtools skipped if connection fails or not available.

Fixed

  • #1144 test_run markdown help file had a typo.
  • #1143 Linux Snapcraft version did not allow to use python.
  • #1148 pyrun('print(A)','A','A',string(NaN)) did not return expected value.
  • single(int64([1 2; 3 4])) returned a wrong value.
  • py.tuple, py.list compatibility increased.
  • pyenv did not manage python's path with space on Windows.
  • Matio 1.5.27 compatibility on ArchLinux.
  • Ubuntu 24.04 LTS support.
  • #1178 Fedora 40 support (CI).
  • #1134 [CI] MacOS X Ventura restored.

v1.3.0

1 month ago

1.3.0 (2024-03-30)

Added

  • Python interface (part 1):

    • CMake: Optional Python3 detection.
    • pyenv Change default environment of Python interpreter.
    • pyrun Run Python statements from Nelson.
    • Major types conversions are compatible (numpy in the next upcoming version).
  • ArchLinux packaging (https://aur.archlinux.org/packages/nelson-git).

  • contour Contour plot of matrix.

  • contour3 3-D contour plot.

  • shiftdim Shift array dimensions.

  • xcorr2 2-D cross-correlation.

  • deconv Deconvolution and polynomial division.

  • vecnorm Vector-wise norm.

  • normpdf Normal probability density function.

  • #310 gammaln Logarithm of gamma function.

  • #1112 gradient Numerical gradient.

  • #1126 isspace Determine which characters are space characters.

Changed

  • #1110 Eigen master branch (352ede96e4c331daae4e1be9a5f3f50fff951b8d) ready to use.
  • #1134 [CI] MacOS X Ventura disabled (Install dependencies fails)
  • struct supports scalar string array as field name.

Fixed

  • #1110 add help about build and use C/C++ on fly.
  • #1124 unexpected result from long statements on Multiple Lines.
  • #1127 Nelson could crash if an mxn characters is displayed in the variable browser.
  • #1125 Unsupported colon operator with char operands.
  • Missing 'zoom in', 'zoom out' icons for help viewer in linux package.
  • gcd without argument returned wrong error message.
  • #1133 [CI] [ARCH LINUX] Warning about MPI.

v1.2.0

2 months ago

1.2.0 (2024-02-25)

Added

  • Recursive completion on Graphic handle, struct, handle, class (properties, methods).
  • Adding links between documents about mex and supported compilers.
  • GitHub CI for macOS Sonoma (Apple Silicon) support.
  • Export to ... context menu for console and text editor as pdf.
  • CTRL + Mouse wheel or CTRL + +/- to zoom in/out on console, editor, help.
  • Toolbar for figure with print, zoom in, zoom out, rotation, pan, restore axes.
  • zoom , pan , rotate3d functions.
  • MenuBar, ToolBar figure properties.
  • Window menu on graphic window, list all others available windows.
  • feature builtin (undocument features, debug, tests, ...) content can change with next releases.
  • GridAlpha, GridColor, View properties for Axes.
  • CTRL+C in help viewer, copy selected text.
  • checkupdate function and check update menu.
  • isScalarStringArray iinternal API C++ method.

Changed

  • Clicking on an axis automatically sets it as the current axes object.
  • Clicking on an figure automatically sets it as the current figure object.
  • saveas exports the figure as a PDF page with centered alignment.
  • Default color of grid for axes.
  • Default figure size updated.
  • Default MarkerFaceColor value for compatibility.
  • view function returns azimuth and elevation values.
  • Camera view reworked.
  • Minimal screen resolution supported 800x600.

Fixed

  • Change directory with file browser line editor did not work as expected.
  • Template to create a function with file browser was wrong.
  • Do not allow to select multiple variable in workspace browser.
  • File browser checks if files with the extension ".m" have a valid name before enable 'run' context menu.
  • Paste in editor with multiple tab.
  • Starting the Nelson desktop was taking longer than necessary.

v1.1.0

3 months ago

1.1.0 (2024-01-29)

Added

  • Nelson Desktop environment: file browser, command history, workspace browser, desktop layout.
  • #1074 Roadmap v2.0.0
  • #1044: LU matrix factorization.
  • #1080 LineStyle, LineWidth properties were not implemented for surface objects.
  • sky, abyss colormaps.

v1.0.0

4 months ago

1.0.0 (2024-01-04)

Nelson 1.0.0 has been released.

Nelson is an interactive, fully functional environment for engineering and scientific applications. It implements a matrix-driven language (which is largely compatible with MATLAB and GNU Octave), with advanced features such as 2-D 3-D plotting, image manipulation and viewing, a codeless interface to external C/C++/FORTRAN libraries, native support for various C types, and a host of other features.

Features

  • Types managed by Nelson:

    • double and double complex: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
    • single and single complex: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
    • logical: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
    • character array (UNICODE supported).
    • string array (UNICODE supported).
    • integers 8, 16, 32, 64 signed and unsigned: scalar, vector, matrix 2D, N dimensions array.
    • handle objects.
    • anonymous functions,
    • all types can be overloaded.
  • OpenMP and SIMD extensions used.

  • 2D and 3D plotting with high-level plot commands.

  • Parallel Computing Module.

  • Fast Fourrier Transformation functions based on FFTW and MKL wrapper.

  • SLICOT (Subroutine Library in Systems and Control Theory) interfaces (optional).

  • Control System module.

  • Message Passing Interface (MPI): functions for parallel computing.

  • JSON decode/encode data support.

  • HDF5 high-level functions I/O,

  • HDF5 used as default data file format (.nh5) load/save workspace,

  • MAT-file compatible load/save workspace,

  • Foreign Function Interface C/Fortran.

  • Interfacing C/C++ or Fortran with Nelson (build and load external code on the fly).

  • MEX C API compatibility.

  • Nelson Engine API for C (compatible with MEX Engine). Call Nelson from your C code as engine.

  • RESTful API web service.

  • Inter-process communication between Nelson's process.

  • The QML engine enables nelson programs to display and manipulate graphical content using Qt's QML framework.

  • Component Object Model (COM) client interface: binary-interface standard for software components on Windows.

  • Write/Read xlsx files on Windows using COM.

  • Embedded Nelson code editor.

  • Help engine:

    Generate help files using Nelson dedicated functions. View your generated help files as html, markdown, pdf, gitbook or directly in Nelson help viewer.

  • Tests engine:

    Validate your algorithm using Nelson dedicated functions. Export the test results under the xUnit reports format.

  • Profiling and Code coverage tools for Nelson's language:

    Nelson has a built-in profiler that is very useful to profile your code and find out what script or function is taking the most time.

  • Nelson cloud: Instant access to Nelson anywhere from an web browser.

  • Module skeleton to extend Nelson available here:

  • Nelson Modules Manager (nmm) : package manager for Nelson

v0.7.12

4 months ago

0.7.12 (2023-12-23)

Changed

  • #674 Migrate sources to nelson-lang github organization.
  • #775 quit, exit, startup.m, finish.m behavior reworked for compatibility.
  • JSON for Modern C++ version 3.11.3 used on all platforms.
  • {fmt} 10.1.1 (6f95000) used.
  • Fedora 39 CI support.

Fixed

  • cellfun did not check type of second input argument.

Added

  • filter 1-D digital filter.

  • control system module (part 2):

    • freqresp Evaluate system response over a grid of frequencies.
    • step Simulate continuous time model of a state space model or transfer function.
    • lsim Plot simulated time response of dynamic system to arbitrary inputs.
    • dc2 Convert model from discrete to continuous time.
    • c2d Convert model from continuous to discrete time.
    • augstate Append state vector to output vector.
    • kalman Design Kalman filter for state estimation.
    • evalfr Evaluate system response at specific frequency.
    • nyquist Nyquist plot of frequency response.
    • ord2 Generate continuous second-order systems.
    • append Group models by appending their inputs and outputs.
    • feedback Feedback connection of multiple models.
    • parallel Parallel connection of two models.
    • series Series connection of two models.
    • ssdelete Remove inputs, outputs and states from state-space system.
    • ssselect Extract subsystem from larger system.
    • tzero Invariant zeros of linear system.
    • tf2ss Convert transfer function filter parameters to state-space form.
    • ss2tf Convert state-space representation to transfer function.
    • minreal Minimal realization or pole-zero cancellation.
    • ssdata Access state-space model data.
    • tfdata Access transfer function data.
    • gram Controllability and observability Gramians.
    • hsvd Hankel singular values of a state-space or transfer function model.
    • damp Natural frequency and damping ratio.
    • balreal Gramian-based balancing of state-space realizations.
    • lqry Form linear-quadratic (LQ) state-feedback regulator with output weighting.
    • #957 dlqr Linear-quadratic (LQ) state-feedback regulator for discrete-time state-space system.
    • #961 lqed Discrete Kalman estimator design from continuous cost function.
    • #960 lqe Kalman estimator design for continuous-time systems.
    • #955 lqr Linear-Quadratic Regulator (LQR) design.
    • #943 dare Solve discrete-time algebraic Riccati equations.
    • #951 care Continuous-time algebraic Riccati equation solution.
    • #945 ctrbf Compute controllability staircase form.
    • #946 ctrb Controllability of state-space model.
    • #963 obsv Observability matrix.
    • #964 obsvf Compute observability staircase form.
    • #949 acker Pole placement gain selection using Ackermann's formula.
    • #950 bdschur Block-diagonal Schur factorization.
    • #952 cloop Close unity feedback loops.
    • #953 compreal Companion realization of transfer functions.
    • #959 gensig Create periodic signals for simulating system response.

v0.7.11

5 months ago

0.7.11 (2023-11-29)

Added

  • hist Histogram plot.
  • bar Bar graph.
  • scatter Scatter plot.
  • stem Plot discrete sequence data.
  • stairs Stairstep graph.
  • fill 2-D patch.
  • pie legacy pie chart.
  • subsref Subscripted reference.
  • subsasgn Redefine subscripted assignment.
  • substruct Create structure argument for subsasgn or subsref.
  • deal Distribute inputs to outputs.
  • Intel compiler support.

Changed

  • axis limits recalculate with hggroup.
  • axes forces focus on current axe.
  • function_handle parenthese precedence.
  • patch and fill manages FaceAlpha.
  • visibility title and labels.
  • object constructor must be in '@' directory and no more in parent directory (compatibility).
  • subsref, subsasgn compatibility with substruct.
  • To display a percent sign, you need to use a double percent sign (%%) in the format string (compatibility).
  • French translation updated (100%, Thanks to weblate contributors)
  • #997 Macos BigSur Github CI support removed.
  • Qt 6.6.1 on win64 CI build.

Fixed

  • A = []; A(false) = zeros(3, 0) did not return an empty matrix but an error.

v0.7.10

6 months ago

0.7.10 (2023-10-27)

Added

  • private functions/folders support (to limit the scope of a function).

  • syntax extended to facilitate the creation of literal integers without loss of precision:

    • example: 18446744073709551615u64, 18446744073709551615i64 (similar to rust syntax)
  • flintmax('like', p) syntax added.

  • int64, uint64 warning about double-precision.

  • #570 balance: Diagonal scaling to improve eigenvalue accuracy.

  • isobject Check whether the input is an object.

  • cell2mat Convert cell array of matrices to single matrix.

  • #948 blkdiag Create a block diagonal matrix from 2D matrices of different sizes.

  • kron Kronecker tensor product.

  • strjust Justify strings.

  • control system module (part 1):

    • #967 control system module template.
    • #944 mag2db, db2mag, pow2db, db2pow functions.
    • #968 zp2tf: Zero-pole to transfer function conversion.
    • #954 dcgain: Low-frequency (DC) gain of LTI system.
    • #965 padecoef: Padé approximation of time delays.
    • #958 esort: Sort continuous-time poles by real part.
    • dsort: Sort discrete-time poles by magnitude.
    • #962 lyap: Continuous Lyapunov equation solution.
    • dlyap: Discret Lyapunov equation solution.
    • abcdchk Verifies the dimensional compatibility of matrices A, B, C, and D.
    • ss: State-space model.
    • tf: Transfer function model (display, horzcat, vertcat, size).
    • isct: checks if dynamic system model is in continuous time.
    • isdt: checks if dynamic system model is in discret time.
    • isstatic: checks if model is static or dynamic.
    • islti: checks if variable is an linear model tf, ss or zpk.
    • issiso: checks if dynamic system model is a single input and single output.
    • zero: Zeros and gain of SISO dynamic system.
    • pole: Poles of dynamic system.
    • bode: Bode plot of frequency response, magnitude and phase data.

Changed

  • some modules (nig, modules_manager, help_browser) reworked to use private functions.
  • Windows 64 bit CI and release use Qt 6.6.0

Fixed

  • #940 title bar on dark theme on Windows.
  • help viewer using dark theme.
  • adjust position xlabel on figure.
  • #976 wrong output when reading a file with fscanf with size argument.
  • #975 Legend color (and width) is not matching that of curve in figure.
  • #988 anonymous function serialization '.^' and '^' are inversed.

v0.7.9

7 months ago

0.7.9 (2023-09-18)

Changed

  • #488 overloading functions:

    • all types including basic types can be overloaded.
    • overload is now fully compatible using '@' syntax and precedence.
    • all operators were reworked to support compatible overload.
  • .* operator optimized.

  • conv2 optimized.

  • Boost 1.82 used on Windows.

  • Internals:

    • class, function_handle types reworked.
    • types order updated.
    • rework validator module.
    • functions finder reworked.
    • file watcher reworked.
    • operators reworked.
    • repmat, ones, NaN, Inf reworked.
  • function_handle display is more compatible.

Added

  • #491 Anonymous functions
  • --withoutfilewatcher executable argument. disable file watcher for current session.
  • <--FILE WATCHER REQUIRED --> test_run option.
  • #853 MacOs 13 ventura CI

Fixed

  • #916 openblas micromamba on macos required to link libgfortran

v0.7.5

11 months ago

0.7.5 (2023-05-27)

Changed

  • BS::thread_pool v3.5.0
  • simdutf to 3.2.9.
  • {fmt} to 10.0.0.
  • fast_float to 4.0.0.
  • cast reworked to be more compatible.
  • colon reworked to be more compatible (operator uses unary overload).
  • CMake 3.26.3 on Windows