Skip to content

Commit ad6c3e1

Browse files
v1.8.0
1 parent ac50c6d commit ad6c3e1

24 files changed

Lines changed: 1239 additions & 78 deletions

en/README.md

Lines changed: 56 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,84 @@
11
![banner](banner_homepage.png)
22

3-
### Nelson 1.7.0.0
3+
### Nelson 1.8.0.0
44

5-
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.
5+
Nelson is a powerful, open-source numerical computational language, developed to provide a comprehensive and intuitive environment for engineers, scientists, and students. With over 1,200 built-in functions, Nelson supports a wide range of tasks, from basic algebra to advanced numerical simulations.
66

7-
Try it !
7+
Originally inspired by languages like MATLAB© and GNU Octave, Nelson offers users a lightweight yet feature-rich experience. It is designed to be easy to learn and use, with an emphasis on performance and flexibility.
88

9-
[Web site](https://nelson-lang.github.io/nelson-website/)
9+
**Try it now!**
1010

11-
## Features
12-
13-
- Types managed by Nelson:
14-
15-
- double and double complex: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
16-
- single and single complex: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
17-
- logical: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
18-
- character array (UNICODE supported).
19-
- string array (UNICODE supported).
20-
- integers 8, 16, 32, 64 signed and unsigned: scalar, vector, matrix 2D, N dimensions array.
21-
- handle objects.
22-
- anonymous functions,
23-
- all types can be overloaded.
24-
25-
- `OpenMP` and `SIMD` extensions used.
26-
27-
- 2D and 3D plotting with high-level plot commands.
28-
29-
- Desktop environment with history, file and workspace browser.
30-
31-
- Parallel Computing Module.
32-
33-
- Fast Fourrier Transformation functions based on FFTW and MKL wrapper.
34-
35-
- SLICOT (Subroutine Library in Systems and Control Theory) interfaces (optional).
11+
[Site Web](https://nelson-lang.github.io/nelson-website/)
3612

37-
- Control System module.
38-
39-
- Message Passing Interface (MPI): functions for parallel computing.
40-
41-
- JSON decode/encode data support.
42-
43-
- HDF5 high-level functions I/O,
44-
45-
- HDF5 used as default data file format (.nh5) load/save workspace,
46-
47-
- MAT-file compatible load/save workspace,
48-
49-
- Foreign Function Interface C/Fortran.
50-
51-
- Interfacing C/C++ or Fortran with Nelson (build and load external code on the fly).
52-
53-
- MEX C API compatibility.
13+
## Features
5414

55-
- Call Python from Nelson.
15+
### Data Types Managed by Nelson
5616

57-
- Nelson Engine API for C (compatible with MEX Engine). Call Nelson from your C code as engine.
17+
- **Double and Complex Double**: Supports scalars, vectors, 2D matrices, N-dimensional arrays, and sparse matrices.
18+
- **Single and Complex Single**: Includes scalars, vectors, 2D matrices, N-dimensional arrays, and sparse matrices.
19+
- **Logical**: Handles scalars, vectors, 2D matrices, N-dimensional arrays, and sparse matrices.
20+
- **Character Arrays**: Supports UNICODE characters.
21+
- **String Arrays**: Fully supports UNICODE.
22+
- **Integers**: 8, 16, 32, and 64-bit signed and unsigned scalars, vectors, 2D matrices, and N-dimensional arrays.
23+
- **Handle Objects**: For object-oriented functionality.
24+
- **Anonymous Functions**: Allows creation and manipulation of functions without names.
25+
- **Data Structures**: Supports dictionaries and tables.
26+
- **Overloading**: All types can be overloaded for custom behavior.
5827

59-
- RESTful API web service.
28+
### Performance Enhancements
6029

61-
- Inter-process communication between Nelson's process.
30+
- **OpenMP and SIMD**: Utilizes parallel processing and vectorization for faster computations.
6231

63-
- The QML engine enables nelson programs to display and manipulate graphical content using Qt's QML framework.
32+
### Visualization & Interface
6433

65-
- Component Object Model (COM) client interface: binary-interface standard for software components on Windows.
34+
- **2D and 3D Plotting**: High-level commands for visualizations.
35+
- **User Interface Controls**: Built-in controls for creating custom interfaces.
36+
- **Desktop Environment**: Comes with history tracking, a file explorer, and workspace browser.
6637

67-
- Write/Read xlsx files on Windows using COM.
38+
### Advanced Modules
6839

69-
- Embedded Nelson code editor.
40+
- **Parallel Computing**: Enables efficient use of multi-core processors.
41+
- **Fast Fourier Transform (FFT)**: High-performance FFT functions based on FFTW and MKL.
42+
- **SLICOT Interface**: Optional support for the Systems and Control Theory subroutine library.
43+
- **Control System Module**: Tools for control theory and system design.
44+
- **MPI (Message Passing Interface)**: Functions for distributed parallel computing.
7045

71-
- Help engine:
46+
### Data Formats & Interfacing
7247

73-
Generate help files using Nelson dedicated functions.
74-
View your generated help files as html, markdown, pdf, gitbook or directly in Nelson help viewer.
48+
- **JSON Support**: Read and write JSON files.
49+
- **HDF5 Functions**: High-level I/O functions, with HDF5 as the default file format for `.nh5` workspaces.
50+
- **MAT-File Compatibility**: Load and save workspaces in MAT-file format.
51+
- **Foreign Function Interface (FFI)**: Build and load C/Fortran code on the fly.
52+
- **MEX C API Compatibility**: Interfacing with MEX-compatible C APIs.
53+
- **Nelson Engine API**: Use Nelson as a backend engine within C code, compatible with the MEX Engine API.
54+
- **Python Interfacing**: Call Python scripts and functions from Nelson.
55+
- **RESTful API**: Enables Nelson to interact with web services.
7556

76-
- Tests engine:
57+
### Additional Capabilities
7758

78-
Validate your algorithm using Nelson dedicated functions.
79-
Export the test results under the xUnit reports format.
59+
- **Inter-Process Communication**: Communicate between Nelson processes.
60+
- **QML Engine**: Use Qt’s QML framework to display and manipulate graphical content.
61+
- **Component Object Model (COM)**: Interface with COM components, especially on Windows.
62+
- **Excel File Support**: Write and read `.xlsx` files using COM on Windows.
63+
- **Embedded Code Editor**: Integrated editor for Nelson scripts.
8064

81-
- Profiling and Code coverage tools for Nelson's language:
65+
### Help & Testing Tools
8266

83-
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.
67+
- **Help Engine**: Generate and view help files in various formats like HTML, Markdown, PDF, or GitBook.
68+
- **Test Engine**: Validate algorithms using built-in functions, with support for xUnit report export.
8469

85-
- [Nelson cloud](https://www.npmjs.com/package/nelson-cloud):
86-
Instant access to Nelson anywhere from an web browser.
70+
### Profiling & Code Coverage
8771

88-
- Module skeleton to extend Nelson available here:
72+
- **Profiler**: Built-in profiler to analyze and optimize code performance.
73+
- **Code Coverage**: Measure the coverage of your tests to ensure thorough validation.
8974

90-
- [template macros and builtin](https://github.com/nelson-lang/module_skeleton),
91-
- [basic template macros only](https://github.com/nelson-lang/module_skeleton_basic).
75+
### Cloud & Extensibility
9276

93-
- Nelson Modules Manager (nmm) : package manager for Nelson
77+
- **Nelson Cloud**: Instant access to Nelson from any web browser via [Nelson Cloud](https://www.npmjs.com/package/nelson-cloud).
78+
- **Module Skeleton**: Templates for extending Nelson:
79+
- [Template with Macros and Builtins](https://github.com/nelson-lang/module_skeleton).
80+
- [Basic Macros Template](https://github.com/nelson-lang/module_skeleton_basic).
81+
- **Nelson Modules Manager (nmm)**: A package manager to install and manage extensions for Nelson.
9482

9583
---
9684

en/SUMMARY.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,20 @@
208208
- [types](./dictionary/types.md)
209209
- [values](./dictionary/values.md)
210210

211+
- [table](./table/README.md)
212+
213+
- [Accessing and Manipulating Tables in Nelson](./table/accessing_manipulating_table.md)
214+
- [array2table](./table/array2table.md)
215+
- [cell2table](./table/cell2table.md)
216+
- [height](./table/height.md)
217+
- [istable](./table/istable.md)
218+
- [struct2table](./table/struct2table.md)
219+
- [table](./table/table.md)
220+
- [table2array](./table/table2array.md)
221+
- [table2cell](./table/table2cell.md)
222+
- [table2struct](./table/table2struct.md)
223+
- [width](./table/width.md)
224+
211225
- [integer](./integer/README.md)
212226

213227
- [int16](./integer/int16.md)
@@ -707,6 +721,7 @@
707721
- [cputime](./time/cputime.md)
708722
- [date](./time/date.md)
709723
- [datenum](./time/datenum.md)
724+
- [datestr](./time/datestr.md)
710725
- [datevec](./time/datevec.md)
711726
- [eomday](./time/eomday.md)
712727
- [etime](./time/etime.md)

en/changelogs/CHANGELOG.md

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,51 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## 1.7.0 (2024-08-27)
8+
## 1.8.0 (2024-10-04)
9+
10+
### Added
11+
12+
- **`table` Data Type**:
13+
14+
- Introduced the `table` data type, offering enhanced functionality for structured data manipulation.
15+
16+
- Overloaded methods specific to the `table` data type:
17+
18+
- `disp`, `display` for table display.
19+
- `horzcat`, `vertcat` for horizontal and vertical concatenation.
20+
- `isempty` to check if the table is empty.
21+
- `isequal`, `isequalto` for table comparison.
22+
- `properties` for accessing table metadata.
23+
- `subsasgn` for subscripted assignment.
24+
- `subsref` for subscripted referencing.
25+
26+
- Conversion functions added:
27+
28+
- `array2table`: Convert an array to a table.
29+
- `cell2table`: Convert a cell array to a table.
30+
- `struct2table`: Convert a structure to a table.
31+
- `table2array`: Convert a table to an array.
32+
- `table2cell`: Convert a table to a cell array.
33+
- `table2struct`: Convert a table to a structure.
34+
35+
- Utility functions introduced:
36+
- `width`: Retrieve the number of columns in the table
37+
- `height`: Retrieve the number of rows in the table
38+
- `istable`: Check if a variable is of the `table` data type
39+
40+
- `Resize` - Resize figure property.
41+
- [#36](http://github.com/nelson-lang/nelson/issues/36) `datenum` format compatibility extended.
42+
- [#37](http://github.com/nelson-lang/nelson/issues/37) `datestr` Convert date and time to string format.
43+
44+
### Changed
45+
46+
- CodeQL Github action updated.
47+
48+
### Fixed
49+
50+
- fix 'units' refresh for 'axes' object.
51+
52+
## 1.7.0 (2024-08-28)
953

1054
### Added
1155

en/graphics/figure.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ Creates an figure window.
4343
<p><b>Parent</b>: Figure parent: root graphics object.</p>
4444
<p><b>Position</b>: Location and size of drawable area: [left, bottom, width, height]</p>
4545
<p>'width' and 'height' define the size of the window. 'left' and 'bottom' define the position of the first addressable pixel in the lower left corner of the window</p>
46+
<p><b>Resize</b>: Resize figure: 'on' or 'off' (default).</p>
4647
<p><b>Tag</b>: Object identifier: string scalar, character vector, '' (default).</p>
4748
<p><b>ToolBar</b>: Figure toolbar display: 'none', 'auto' (default), 'figure'.</p>
4849
<p><b>Type</b>: Type 'figure'.</p>
@@ -81,6 +82,7 @@ figure('Name', 'Hello')
8182
| 1.2.0 | Clicking on an figure automatically sets it as the current figure object. |
8283
| 1.7.0 | CreateFcn, DeleteFcn, CloseRequestFcn, KeyPressFcn, KeyReleaseFcn, ButtonDownFcn callback added. |
8384
| -- | BeingDeleted property added. |
85+
| 1.8.0 | Resize property added. |
8486

8587
## Author
8688

en/table/README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Tables
2+
3+
Tables
4+
5+
## Description
6+
7+
Tables of arrays with named columns, each potentially containing different data types.
8+
9+
- [Accessing and Manipulating Tables in Nelson](accessing_manipulating_table.md)
10+
- [array2table](array2table.md) - Convert homogeneous array to table.
11+
- [cell2table](cell2table.md) - Convert cell array to table.
12+
- [height](height.md) - Number of table rows
13+
- [istable](istable.md) - Determine if input is table.
14+
- [struct2table](struct2table.md) - Convert a structure array into a tabular format.
15+
- [table](table.md) - A table-like array with named variables, capable of holding different data types
16+
- [table2array](table2array.md) - Convert table to homogeneous array.
17+
- [table2cell](table2cell.md) - Convert table to cell array
18+
- [table2struct](table2struct.md) - Convert table to structure array
19+
- [width](width.md) - Number of table variables

en/table/SUMMARY.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
- [table](README.md)
2+
- [Accessing and Manipulating Tables in Nelson](accessing_manipulating_table.md)
3+
- [array2table](array2table.md)
4+
- [cell2table](cell2table.md)
5+
- [height](height.md)
6+
- [istable](istable.md)
7+
- [struct2table](struct2table.md)
8+
- [table](table.md)
9+
- [table2array](table2array.md)
10+
- [table2cell](table2cell.md)
11+
- [table2struct](table2struct.md)
12+
- [width](width.md)

0 commit comments

Comments
 (0)