diff --git a/en/README.md b/en/README.md index 25ebb91c..17db9640 100644 --- a/en/README.md +++ b/en/README.md @@ -1,6 +1,6 @@  -### Nelson 1.9.0.0 +### Nelson 1.10.0.0 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. diff --git a/en/SUMMARY.md b/en/SUMMARY.md index 66951dd4..8a9c4826 100644 --- a/en/SUMMARY.md +++ b/en/SUMMARY.md @@ -113,6 +113,7 @@ - [i18n](./i18n/README.md) - [gettext](./i18n/gettext.md) + - [i18nHelpers](./i18n/i18nHelpers.md) - [poheader](./i18n/poheader.md) - [characters_encoding](./characters_encoding/README.md) @@ -171,6 +172,7 @@ - [double](./double/double.md) - [flintmax](./double/flintmax.md) - [realmax](./double/realmax.md) + - [realmin](./double/realmin.md) - [data_structures](./data_structures/README.md) @@ -185,6 +187,7 @@ - [iscellstr](./data_structures/iscellstr.md) - [isfield](./data_structures/isfield.md) - [namedargs2cell](./data_structures/namedargs2cell.md) + - [num2cell](./data_structures/num2cell.md) - [orderfields](./data_structures/orderfields.md) - [rmfield](./data_structures/rmfield.md) - [setfield](./data_structures/setfield.md) @@ -212,6 +215,7 @@ - [Accessing and Manipulating Tables in Nelson](./table/1_accessing_manipulating_table.md) - [Direct computation with Table](./table/2_direct_compution_with_table.md) + - [Read/Write table to files](./table/3_read_write_table.md) - [array2table](./table/array2table.md) - [cell2table](./table/cell2table.md) - [head](./table/head.md) @@ -265,6 +269,7 @@ - [isStringScalar](./string/isStringScalar.md) - [isletter](./string/isletter.md) - [isspace](./string/isspace.md) + - [join](./string/join.md) - [mat2str](./string/mat2str.md) - [matches](./string/matches.md) - [newline](./string/newline.md) @@ -430,6 +435,7 @@ - [ismatrix](./elementary_functions/ismatrix.md) - [isnan](./elementary_functions/isnan.md) - [isrow](./elementary_functions/isrow.md) + - [isscalar](./elementary_functions/isscalar.md) - [istril](./elementary_functions/istril.md) - [istriu](./elementary_functions/istriu.md) - [isvector](./elementary_functions/isvector.md) @@ -730,8 +736,11 @@ - [datevec](./time/datevec.md) - [eomday](./time/eomday.md) - [etime](./time/etime.md) + - [hour](./time/hour.md) - [leapyear](./time/leapyear.md) + - [minute](./time/minute.md) - [now](./time/now.md) + - [second](./time/second.md) - [sleep](./time/sleep.md) - [tic](./time/tic.md) - [time](./time/time.md) @@ -973,6 +982,7 @@ - [validators](./validators/README.md) - [mustBeA](./validators/mustBeA.md) + - [mustBeColumn](./validators/mustBeColumn.md) - [mustBeFile](./validators/mustBeFile.md) - [mustBeFinite](./validators/mustBeFinite.md) - [mustBeFloat](./validators/mustBeFloat.md) @@ -985,6 +995,7 @@ - [mustBeLessThanOrEqual](./validators/mustBeLessThanOrEqual.md) - [mustBeLogical](./validators/mustBeLogical.md) - [mustBeLogicalScalar](./validators/mustBeLogicalScalar.md) + - [mustBeMatrix](./validators/mustBeMatrix.md) - [mustBeMember](./validators/mustBeMember.md) - [mustBeNegative](./validators/mustBeNegative.md) - [mustBeNonNan](./validators/mustBeNonNan.md) @@ -999,6 +1010,7 @@ - [mustBeNumericOrLogical](./validators/mustBeNumericOrLogical.md) - [mustBePositive](./validators/mustBePositive.md) - [mustBeReal](./validators/mustBeReal.md) + - [mustBeRow](./validators/mustBeRow.md) - [mustBeScalarOrEmpty](./validators/mustBeScalarOrEmpty.md) - [mustBeText](./validators/mustBeText.md) - [mustBeTextScalar](./validators/mustBeTextScalar.md) @@ -1017,7 +1029,6 @@ - [stream_manager](./stream_manager/README.md) - [diary](./stream_manager/diary.md) - - [dlmwrite](./stream_manager/dlmwrite.md) - [fclose](./stream_manager/fclose.md) - [feof](./stream_manager/feof.md) - [ferror](./stream_manager/ferror.md) @@ -1125,6 +1136,8 @@ - [dlgenerateloader](./dynamic_link/dlgenerateloader.md) - [dlgeneratemake](./dynamic_link/dlgeneratemake.md) - [dlgenerateunloader](./dynamic_link/dlgenerateunloader.md) + - [dlgetnelsonincludes](./dynamic_link/dlgetnelsonincludes.md) + - [dlgetnelsonlibraries](./dynamic_link/dlgetnelsonlibraries.md) - [dllib_used](./dynamic_link/dllib_used.md) - [dllibinfo](./dynamic_link/dllibinfo.md) - [dllibisloaded](./dynamic_link/dllibisloaded.md) @@ -1143,7 +1156,7 @@ - [libpointer_reshape](./dynamic_link/libpointer_reshape.md) - [libpointer_setdatatype](./dynamic_link/libpointer_setdatatype.md) - [libpointer_used](./dynamic_link/libpointer_used.md) - - [loadcompilerconf](./dynamic_link/loadcompiler.md) + - [loadcompilerconf](./dynamic_link/loadcompilerconf.md) - [removecompilerconf](./dynamic_link/removecompilerconf.md) - [vswhere](./dynamic_link/vswhere.md) @@ -1204,7 +1217,7 @@ - [COM_xlsfinfo](./com_engine/COM_xlsfinfo.md) - [COM_xlsread](./com_engine/COM_xlsread.md) - [COM_xlswrite](./com_engine/COM_xlswrite.md) - - [actxGetRunningSrv](./com_engine/actxGetRunningSrv.md) + - [actxGetRunningServer](./com_engine/actxGetRunningServer.md) - [actxcontrollist](./com_engine/actxcontrollist.md) - [actxserver](./com_engine/actxserver.md) - [actxserverlist](./com_engine/actxserverlist.md) @@ -1275,6 +1288,7 @@ - [zero](./control_system/zero.md) - [python_engine](./python_engine/README.md) + - [The power of calling Python from Nelson](./python_engine/1_The_power_of_Python.md) - [How to install python package](./python_engine/2_How_to_install_python_package.md) - [Python Nelson types](./python_engine/3_python_types.md) @@ -1283,3 +1297,16 @@ - [pyenv](./python_engine/pyenv.md) - [pyrun](./python_engine/pyrun.md) - [pyrunfile](./python_engine/pyrunfile.md) + +- [spreadsheet](./spreadsheet/README.md) + - [csvread](./spreadsheet/csvread.md) + - [csvwrite](./spreadsheet/csvwrite.md) + - [detectImportOptions](./spreadsheet/detectImportOptions.md) + - [dlmread](./spreadsheet/dlmread.md) + - [dlmwrite](./spreadsheet/dlmwrite.md) + - [readcell](./spreadsheet/readcell.md) + - [readmatrix](./spreadsheet/readmatrix.md) + - [readtable](./spreadsheet/readtable.md) + - [writecell](./spreadsheet/writecell.md) + - [writematrix](./spreadsheet/writematrix.md) + - [writetable](./spreadsheet/writetable.md) diff --git a/en/changelogs/CHANGELOG.md b/en/changelogs/CHANGELOG.md index fae4e31a..fdd97130 100644 --- a/en/changelogs/CHANGELOG.md +++ b/en/changelogs/CHANGELOG.md @@ -5,6 +5,43 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 1.10.0 (2024-12-14) + +### Added + +- `detectImportOptions`: Generate import options from the file's content. +- `readtable`: Read table from file. +- `writetable`: Write table to file. +- `readcell`: Read cell array from file. +- `writecell`: write cell array to file. +- `readmatrix`: read matrix from file. +- `writematrix`: write matrix to file. +- `csvread`: Read comma-separated value (CSV) file. +- `csvwrite`: Write comma-separated value (CSV) file. +- `dlmread`: Read ASCII-delimited file of numeric data into matrix. +- `realmin`: Smallest normalized floating-point number. +- [#1288](http://github.com/nelson-lang/nelson/issues/1288) `mustBeMatrix`, `mustBeRow`, `mustBeColumn` validator functions. +- `join`: Combine strings. +- [#1292](http://github.com/nelson-lang/nelson/issues/1292) Large Table Display. +- [#1290](http://github.com/nelson-lang/nelson/issues/1290) `VariableTypes` property for table: Specify the data types of table in Nelson. +- `hour`, `minute`, `second` component of input date and time. + +### Changed + +- `narginchk`, `nargoutchk` support for check only minimun arguments `narginchk(3, Inf)`. +- Fedora 41 CI +- `title`: `Visible` property is inherited from the parent if not explicitly defined. +- i18n: migration PO files to JSON. +- `dlmwrite`: rework the function to be more fast and robust. +- `strjust`: rework the function to be more fast and robust. +- `datenum`: support '' as format for compatibility. + +### Fixed + +- [#1303](http://github.com/nelson-lang/nelson/issues/1303) `datevec` result must be normalized. +- [#1297](http://github.com/nelson-lang/nelson/issues/1297) some features have no help files. +- [#1276](http://github.com/nelson-lang/nelson/issues/1276) micromamba macos build. + ## 1.9.0 (2024-10-26) ### Added diff --git a/en/com_engine/README.md b/en/com_engine/README.md index 32d4be57..5deb2634 100644 --- a/en/com_engine/README.md +++ b/en/com_engine/README.md @@ -20,7 +20,7 @@ Component Object Model (COM) client interface: binary-interface standard for sof - [COM_xlsfinfo](COM_xlsfinfo.md) - Determines if file contains Microsoft Excel spreadsheet. - [COM_xlsread](COM_xlsread.md) - Read Microsoft Excel spreadsheet file using COM. - [COM_xlswrite](COM_xlswrite.md) - Write Microsoft Excel spreadsheet file using COM. -- [actxGetRunningSrv](actxGetRunningSrv.md) - Handle to running instance of Automation server. +- [actxGetRunningServer](actxGetRunningServer.md) - Handle to running instance of Automation server. - [actxcontrollist](actxcontrollist.md) - Get available ActiveX controls. - [actxserver](actxserver.md) - Creates COM server. - [actxserverlist](actxserverlist.md) - Get available ActiveX servers. diff --git a/en/com_engine/SUMMARY.md b/en/com_engine/SUMMARY.md index 710ac694..8aea21d8 100644 --- a/en/com_engine/SUMMARY.md +++ b/en/com_engine/SUMMARY.md @@ -13,7 +13,7 @@ - [COM_xlsfinfo](COM_xlsfinfo.md) - [COM_xlsread](COM_xlsread.md) - [COM_xlswrite](COM_xlswrite.md) - - [actxGetRunningSrv](actxGetRunningSrv.md) + - [actxGetRunningServer](actxGetRunningServer.md) - [actxcontrollist](actxcontrollist.md) - [actxserver](actxserver.md) - [actxserverlist](actxserverlist.md) diff --git a/en/com_engine/actxGetRunningSrv.md b/en/com_engine/actxGetRunningServer.md similarity index 82% rename from en/com_engine/actxGetRunningSrv.md rename to en/com_engine/actxGetRunningServer.md index 63e3bfcd..87f42a00 100644 --- a/en/com_engine/actxGetRunningSrv.md +++ b/en/com_engine/actxGetRunningServer.md @@ -1,10 +1,10 @@ -# actxGetRunningSrv +# actxGetRunningServer Handle to running instance of Automation server. ## Syntax -- h = actxGetRunningSrv(progid) +- h = actxGetRunningServer(progid) ## Input argument @@ -16,7 +16,7 @@ Handle to running instance of Automation server. ## Description -
h = actxGetRunningSrv(progid) gets a reference to a running instance of the OLE/COM Automation server.
+h = actxGetRunningServer(progid) gets a reference to a running instance of the OLE/COM Automation server.
progid is the programmatic identifier of the Automation server object and h is the handle to the default interface of the server object.
The function returns an error if the server specified by progid is not currently running or if the server object is not registered.
When multiple instances of the Automation server are running, the operating system controls the behavior of this function.
diff --git a/en/com_engine/actxserver.md b/en/com_engine/actxserver.md index 6e45fc8b..0486b7d9 100644 --- a/en/com_engine/actxserver.md +++ b/en/com_engine/actxserver.md @@ -38,7 +38,7 @@ clear pTextToSpeech ## See also -[actxGetRunningSrv](actxGetRunningSrv.md). +[actxGetRunningSrv](actxGetRunningSrv.html). ## History diff --git a/en/core/narginchk.md b/en/core/narginchk.md index bfe0727c..19f9f637 100644 --- a/en/core/narginchk.md +++ b/en/core/narginchk.md @@ -14,6 +14,7 @@ Checks the number of input arguments. ## Descriptionnarginchk checks the number of input arguments of an function.
+To ensure that a minimum number of arguments is provided, while allowing an unlimited maximum number by setting maxArgs to inf. For instance, use narginchk(2, inf) to throw an error if fewer than two inputs are supplied.
## Example @@ -29,9 +30,10 @@ narginchk(1, 2) ## History -| Version | Description | -| ------- | --------------- | -| 1.0.0 | initial version | +| Version | Description | +| ------- | ------------------------- | +| 1.0.0 | initial version | +| 1.10.0 | narginchk(3, Inf) managed | ## Author diff --git a/en/core/nargoutchk.md b/en/core/nargoutchk.md index 7234bafa..d62fbf18 100644 --- a/en/core/nargoutchk.md +++ b/en/core/nargoutchk.md @@ -22,6 +22,7 @@ Checks the number of output arguments. ## Descriptionnargoutchk checks the number of output arguments of an function.
+To ensure a minimum number of outputs while imposing no maximum limit, set maxArgs to inf. For example, nargoutchk(2, inf) generates an error if fewer than two outputs are specified.
## Example @@ -34,13 +35,14 @@ nargoutchk(1, 2, 3, 'struct') ## See also -[nargout](nargin.md), [narginchk](nargoutchk.md). +[nargout](nargin.md), [narginchk](narginchk.md). ## History -| Version | Description | -| ------- | --------------- | -| 1.0.0 | initial version | +| Version | Description | +| ------- | -------------------------- | +| 1.0.0 | initial version | +| 1.10.0 | nargoutchk(3, Inf) managed | ## Author diff --git a/en/data_structures/README.md b/en/data_structures/README.md index 33ba770b..2088548c 100644 --- a/en/data_structures/README.md +++ b/en/data_structures/README.md @@ -17,6 +17,7 @@ data structures functions - [iscellstr](iscellstr.md) - Returns if a variable is a cell of strings. - [isfield](isfield.md) - Checks if a fieldname exists in a struct. - [namedargs2cell](namedargs2cell.md) - Converts a struct containing name-value pairs to a cell. +- [num2cell](num2cell.md) - Convert array to cell array with consistently sized cells. - [orderfields](orderfields.md) - Reorganize the fields of a structured array. - [rmfield](rmfield.md) - Remove fields from structure. - [setfield](setfield.md) - Set structure field contents. diff --git a/en/data_structures/SUMMARY.md b/en/data_structures/SUMMARY.md index e247f7d3..b44aa1d8 100644 --- a/en/data_structures/SUMMARY.md +++ b/en/data_structures/SUMMARY.md @@ -10,6 +10,7 @@ - [iscellstr](iscellstr.md) - [isfield](isfield.md) - [namedargs2cell](namedargs2cell.md) + - [num2cell](num2cell.md) - [orderfields](orderfields.md) - [rmfield](rmfield.md) - [setfield](setfield.md) diff --git a/en/data_structures/cellfun.md b/en/data_structures/cellfun.md index c022596f..724460a4 100644 --- a/en/data_structures/cellfun.md +++ b/en/data_structures/cellfun.md @@ -43,7 +43,7 @@ functions to define for next example: ```matlab function r = fun1(x, y) r = x > y; -endfunction +end function result = errorfun(S, varargin) disp(nargin()) @@ -53,7 +53,7 @@ function result = errorfun(S, varargin) disp(varargin{1}) disp(varargin{2}) result = false; -endfunction +end ``` ```matlab diff --git a/en/data_structures/num2cell.md b/en/data_structures/num2cell.md new file mode 100644 index 00000000..8bf34818 --- /dev/null +++ b/en/data_structures/num2cell.md @@ -0,0 +1,45 @@ +# num2cell + +Convert array to cell array with consistently sized cells. + +## Syntax + +- C = num2cell(A) +- C = num2cell(A, dim) + +## Input argument + +- A - any type of multidimensional array. +- dim - positive integer value or positive vector of integers. + +## Output argument + +- C - a cell array. + +## Description + +num2cell function converts a numeric array into a cell array, where each element of the numeric array is placed in its own cell in the resulting cell array.
+If A is a character array, num2cell will convert each row of the array into a separate cell in the resulting cell array.
+ +## Example + +```matlab +A = [1 2; 3 4; 5 6]; +C = num2cell(A) +C = num2cell(A, 1) +C = num2cell(A, 2) +``` + +## See also + +[cell](cell.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.0.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/double/README.md b/en/double/README.md index 31e399ae..3edf2861 100644 --- a/en/double/README.md +++ b/en/double/README.md @@ -9,3 +9,4 @@ double type functions - [double](double.md) - Converts a variable to double precision type. - [flintmax](flintmax.md) - Largest consecutive integer in floating-point format. - [realmax](realmax.md) - Largest positive floating-point number. +- [realmin](realmin.md) - Smallest positive floating-point number. diff --git a/en/double/SUMMARY.md b/en/double/SUMMARY.md index 43198d1e..93f00be7 100644 --- a/en/double/SUMMARY.md +++ b/en/double/SUMMARY.md @@ -2,3 +2,4 @@ - [double](double.md) - [flintmax](flintmax.md) - [realmax](realmax.md) + - [realmin](realmin.md) diff --git a/en/double/realmin.md b/en/double/realmin.md new file mode 100644 index 00000000..3771d18e --- /dev/null +++ b/en/double/realmin.md @@ -0,0 +1,39 @@ +# realmin + +Smallest positive floating-point number. + +## Syntax + +- R = realmin() +- R = realmin('double') +- R = realmin('single') + +## Output argument + +- R - a double or single. + +## Description + +realmin returns smallest positive floating-point number.
+ +## Example + +```matlab +realmin +realmin('double') +realmin('single') +``` + +## See also + +[realmax](realmax.md), [intmin](../integer/intmin.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/dynamic_link/README.md b/en/dynamic_link/README.md index d416448b..e506a387 100644 --- a/en/dynamic_link/README.md +++ b/en/dynamic_link/README.md @@ -19,6 +19,8 @@ By default, Nelson does not try to detect a C/C++ compiler on Windows. Do not fo - [dlgenerateloader](dlgenerateloader.md) - Generates loader.m file for C++ gateway. - [dlgeneratemake](dlgeneratemake.md) - Generates a makefile for building a dynamic library. - [dlgenerateunloader](dlgenerateunloader.md) - Generates unloader.m file for C++ gateway. +- [dlgetnelsonincludes](dlgetnelsonincludes.md) - Returns paths of Nelson include directories. +- [dlgetnelsonlibraries](dlgetnelsonlibraries.md) - Returns paths to Nelson library files. - [dllib_used](dllib_used.md) - Returns list of current used dllib handle. - [dllibinfo](dllibinfo.md) - Returns list of available symbols in an shared library. - [dllibisloaded](dllibisloaded.md) - Checks if shared library is loaded. @@ -37,6 +39,6 @@ By default, Nelson does not try to detect a C/C++ compiler on Windows. Do not fo - [libpointer_reshape](libpointer_reshape.md) - Reshapes libpointer dimensions. - [libpointer_setdatatype](libpointer_setdatatype.md) - Set type of an libpointer handle. - [libpointer_used](libpointer_used.md) - Returns list of current used libpointer handle. -- [loadcompilerconf](loadcompiler.md) - load compiler configuration. +- [loadcompilerconf](loadcompilerconf.md) - load compiler configuration. - [removecompilerconf](removecompilerconf.md) - Remove used compiler configuration (on Windows). - [vswhere](vswhere.md) - Locate Visual Studio 2017, 2019 and newer installations diff --git a/en/dynamic_link/SUMMARY.md b/en/dynamic_link/SUMMARY.md index 7b6a24cc..fef9347b 100644 --- a/en/dynamic_link/SUMMARY.md +++ b/en/dynamic_link/SUMMARY.md @@ -12,6 +12,8 @@ - [dlgenerateloader](dlgenerateloader.md) - [dlgeneratemake](dlgeneratemake.md) - [dlgenerateunloader](dlgenerateunloader.md) + - [dlgetnelsonincludes](dlgetnelsonincludes.md) + - [dlgetnelsonlibraries](dlgetnelsonlibraries.md) - [dllib_used](dllib_used.md) - [dllibinfo](dllibinfo.md) - [dllibisloaded](dllibisloaded.md) @@ -30,6 +32,6 @@ - [libpointer_reshape](libpointer_reshape.md) - [libpointer_setdatatype](libpointer_setdatatype.md) - [libpointer_used](libpointer_used.md) - - [loadcompilerconf](loadcompiler.md) + - [loadcompilerconf](loadcompilerconf.md) - [removecompilerconf](removecompilerconf.md) - [vswhere](vswhere.md) diff --git a/en/dynamic_link/dlgetnelsonincludes.md b/en/dynamic_link/dlgetnelsonincludes.md new file mode 100644 index 00000000..1ced36a6 --- /dev/null +++ b/en/dynamic_link/dlgetnelsonincludes.md @@ -0,0 +1,38 @@ +# dlgetnelsonincludes + +Returns paths of Nelson include directories. + +## Syntax + +- C = dlgetnelsonincludes() + +## Output argument + +- C - a cell array of paths to various include directories used by Nelson modules + +## Description + +C = dlgetnelsonincludes() returns a cell array of paths to various include directories used by Nelson modules.
+These paths are used internally for module development and building processes.
+ +## Example + +See module skeleton for example + +```matlab +dlgetnelsonincludes() +``` + +## See also + +[dlgetnelsonlibraries](dlgetnelsonlibraries.md), [dlgeneratemake](dlgeneratemake.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/dynamic_link/dlgetnelsonlibraries.md b/en/dynamic_link/dlgetnelsonlibraries.md new file mode 100644 index 00000000..aeb46345 --- /dev/null +++ b/en/dynamic_link/dlgetnelsonlibraries.md @@ -0,0 +1,38 @@ +# dlgetnelsonlibraries + +Returns paths to Nelson library files. + +## Syntax + +- C = dlgetnelsonlibraries() + +## Output argument + +- C - a cell array of paths to various library directories used by Nelson modules + +## Description + +C = dlgetnelsonlibraries() returns a cell array of paths to various library directories used by Nelson modules.
+These paths are used internally for module development and building processes.
+ +## Example + +See module skeleton for example + +```matlab +dlgetnelsonlibraries() +``` + +## See also + +[dlgetnelsonincludes](dlgetnelsonincludes.md), [dlgeneratemake](dlgeneratemake.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/dynamic_link/loadcompiler.md b/en/dynamic_link/loadcompilerconf.md similarity index 100% rename from en/dynamic_link/loadcompiler.md rename to en/dynamic_link/loadcompilerconf.md diff --git a/en/elementary_functions/README.md b/en/elementary_functions/README.md index cf4cee94..af1936ed 100644 --- a/en/elementary_functions/README.md +++ b/en/elementary_functions/README.md @@ -53,6 +53,7 @@ elementary functions - [ismatrix](ismatrix.md) - determines whether input is matrix or not - [isnan](isnan.md) - Check for Not a Number entries. - [isrow](isrow.md) - Determine whether input is row vector. +- [isscalar](isscalar.md) - Check if the input is a scalar - [istril](istril.md) - Checks if matrix is lower triangular. - [istriu](istriu.md) - Checks if matrix is upper triangular. - [isvector](isvector.md) - Checks input is vector. diff --git a/en/elementary_functions/SUMMARY.md b/en/elementary_functions/SUMMARY.md index 36dbf2d1..615ff62a 100644 --- a/en/elementary_functions/SUMMARY.md +++ b/en/elementary_functions/SUMMARY.md @@ -46,6 +46,7 @@ - [ismatrix](ismatrix.md) - [isnan](isnan.md) - [isrow](isrow.md) + - [isscalar](isscalar.md) - [istril](istril.md) - [istriu](istriu.md) - [isvector](isvector.md) diff --git a/en/elementary_functions/isscalar.md b/en/elementary_functions/isscalar.md new file mode 100644 index 00000000..94672d0a --- /dev/null +++ b/en/elementary_functions/isscalar.md @@ -0,0 +1,42 @@ +# isscalar + +Check if the input is a scalar + +## Syntax + +- TF = iscalar(A) + +## Input argument + +- A - input array as a scalar, vector, matrix, or multidimensional array. + +## Output argument + +- TF - a logical: true if it is a scalar. + +## Description + +TF = isscalar(A) returns logical true if A is a scalar, meaning it is a 1-by-1 two-dimensional array.
+Otherwise, it returns logical false.
+ +## Example + +```matlab +x = [1+i, -i ; i, 2i]; +isscalar(x) +isscalar(1) +``` + +## See also + +[isvector](isvector.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/graphics/title.md b/en/graphics/title.md index 0cc662bc..400dd048 100644 --- a/en/graphics/title.md +++ b/en/graphics/title.md @@ -23,6 +23,7 @@ Add title. ## Descriptiontitle('text') adds the title to the current axes.
+Visible property is inherited from the parent if not explicitly defined.
## Example @@ -42,9 +43,10 @@ title('Unicode ドラゴンボールZ(ゼット)', 14); ## History -| Version | Description | -| ------- | --------------- | -| 1.0.0 | initial version | +| Version | Description | +| ------- | ------------------------------------------------------------------------ | +| 1.0.0 | initial version | +| 1.10.0 | Visible property is inherited from the parent if not explicitly defined. | ## Author diff --git a/en/i18n/README.md b/en/i18n/README.md index 6dbfbd44..7942f89e 100644 --- a/en/i18n/README.md +++ b/en/i18n/README.md @@ -7,4 +7,5 @@ I18n functions internalization functions - [gettext](gettext.md) - Get text translated into the current locale. +- [i18nHelpers](i18nHelpers.md) - Internationalization (i18n) utility functions - [poheader](poheader.md) - Generates po file header. diff --git a/en/i18n/SUMMARY.md b/en/i18n/SUMMARY.md index 294a6f72..5f7183e0 100644 --- a/en/i18n/SUMMARY.md +++ b/en/i18n/SUMMARY.md @@ -1,3 +1,4 @@ - [i18n](README.md) - [gettext](gettext.md) + - [i18nHelpers](i18nHelpers.md) - [poheader](poheader.md) diff --git a/en/i18n/i18nHelpers.md b/en/i18n/i18nHelpers.md new file mode 100644 index 00000000..9993bd70 --- /dev/null +++ b/en/i18n/i18nHelpers.md @@ -0,0 +1,40 @@ +# i18nHelpers + +Internationalization (i18n) utility functions + +## Syntax + +- i18nHelpers('convert', potFile, jsonFile) +- i18nHelpers('merge', jsonFile1, jsonFile2) +- i18nHelpers('sort', jsonFileA, jsonFileB) + +## Input argument + +- potFile - String: Path to the source .po/.pot translation template file +- jsonFile - String: Path to JSON translation file destination +- jsonFile1 - String: Path to the source JSON translation file +- jsonFile2 - String: Path to the destination JSON translation file +- jsonFileA - String: Path to the source JSON file to sort +- jsonFileB - String: Path to the sorted JSON file + +## Description + +i18nHelpers provides essential utility functions for managing internationalization files. The main functions include:
+- 'convert': Converts a .po/.pot translation template file into JSON format for easier manipulation.
+- 'merge': Merges two JSON translation files. The entries from jsonFile1
are added to jsonFile2
, and entries exclusive to jsonFile2
are removed.
- 'sort': Sorts and organizes entries in a JSON translation file. jsonFileA
and jsonFileB
may refer to the same file if in-place sorting is desired.
This utility is intended for internal use and may be updated over time.
+ +## See also + +[setlanguage](../localization/setlanguage.md), [getlanguage](../localization/getlanguage.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | Initial version | + +## Author + +Allan CORNET diff --git a/en/interpreter/switch.md b/en/interpreter/switch.md index 9a9d392b..218b1cf3 100644 --- a/en/interpreter/switch.md +++ b/en/interpreter/switch.md @@ -25,7 +25,7 @@ function c = demo_switch(a) otherwise c = 'not sure'; end -endfunction +end ``` ```matlab diff --git a/en/memory_manager/global.md b/en/memory_manager/global.md index 7c580a64..b31f0338 100644 --- a/en/memory_manager/global.md +++ b/en/memory_manager/global.md @@ -22,7 +22,7 @@ Defines a global variable. function myfun() global y; y = 1; -endfunction +end myfun() who diff --git a/en/spreadsheet/README.md b/en/spreadsheet/README.md new file mode 100644 index 00000000..d5850b7d --- /dev/null +++ b/en/spreadsheet/README.md @@ -0,0 +1,15 @@ +# Spreadsheet + +Spreadsheet + +- [csvread](csvread.md) - Read comma-separated value (CSV) file. +- [csvwrite](csvwrite.md) - Write comma-separated value file. +- [detectImportOptions](detectImportOptions.md) - Create import options based on file content. +- [dlmread](dlmread.md) - Read an numeric matrix from a text file file using a delimiter. +- [dlmwrite](dlmwrite.md) - Write an numeric matrix to a text file file using a delimiter. +- [readcell](readcell.md) - Create cell array from file. +- [readmatrix](readmatrix.md) - Create matrix array from file. +- [readtable](readtable.md) - Create table from file. +- [writecell](writecell.md) - Write a cell to a file. +- [writematrix](writematrix.md) - Write a matrix to a file. +- [writetable](writetable.md) - Write table to file. diff --git a/en/spreadsheet/SUMMARY.md b/en/spreadsheet/SUMMARY.md new file mode 100644 index 00000000..d1e8a715 --- /dev/null +++ b/en/spreadsheet/SUMMARY.md @@ -0,0 +1,12 @@ +- [spreadsheet](README.md) + - [csvread](csvread.md) + - [csvwrite](csvwrite.md) + - [detectImportOptions](detectImportOptions.md) + - [dlmread](dlmread.md) + - [dlmwrite](dlmwrite.md) + - [readcell](readcell.md) + - [readmatrix](readmatrix.md) + - [readtable](readtable.md) + - [writecell](writecell.md) + - [writematrix](writematrix.md) + - [writetable](writetable.md) diff --git a/en/spreadsheet/csvread.md b/en/spreadsheet/csvread.md new file mode 100644 index 00000000..bf8d9835 --- /dev/null +++ b/en/spreadsheet/csvread.md @@ -0,0 +1,67 @@ +# csvread + +Read comma-separated value (CSV) file. + +## Syntax + +- M = csvread(filename) +- M = csvread(filename, R1, C1) +- M = csvread(filename, R1, C1, [R1 C1 R2 C2]) + +## Input argument + +- filename - a string: filename source. +- R1, C1 - nonnegative integer: offset. default : 0, 0 +- [R1 C1 R2 C2] - nonnegative integer: Starting row offset, starting column offset, ending row offset and ending column offset. + +## Output argument + +- M - a double matrix. + +## Description + +M = csvread(filename, R1, C1, [R1 C1 R2 C2]) reads only the data within the range specified by row offsets R1 to R2 and column offsets C1 to C2.
+M = csvread(filename, R1, C1) starts reading data at the row and column offsets specified by R1 and C1. For example, R1=0, C1=0 indicates the first value in the file.
+To set row and column offsets without defining a delimiter, use an empty character as a placeholder, like M = csvread(filename, 3, 1).
+M = csvread(filename) read a comma-separated value (CSV) formatted file into matrix M.
+Complex Number Importing: csvread reads each complex number as a single unit, storing it in a complex numeric field.
+Valid forms for complex numbers are:
+ +Form: | +Example: | +
---|---|
±<real>±<imag>i|j | +3.1347-2.1i | +
±<imag>i|j | +-2.1j | +
Note: Whitespace within a complex number is not allowed; csvread interprets any embedded spaces as field delimiters.
+ +## Example + +```matlab +A = [Inf, -Inf, NaN, 3]; +filename = [tempdir(), 'csvread_example.csv']; +csvwrite(filename, A); +R = csvread(filename) +``` + +## See also + +[csvwrite](csvwrite.md), [dlmread](dlmread.md), [fileread](../stream_manager/fileread.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/spreadsheet/csvwrite.md b/en/spreadsheet/csvwrite.md new file mode 100644 index 00000000..0ed003d9 --- /dev/null +++ b/en/spreadsheet/csvwrite.md @@ -0,0 +1,44 @@ +# csvwrite + +Write comma-separated value file. + +## Syntax + +- csvwrite(filename, M) +- csvwrite(filename, M, r, c) + +## Input argument + +- filename - a string: filename destination. +- M - an numeric or logical matrix. +- r, c - integer: offset. default : 0, 0 + +## Description + +csvwrite writes an numeric matrix to an CSV format file.
+ +## Example + +```matlab +A = [Inf, -Inf, NaN, 3]; +filename = [tempdir(), 'dlmwrite_example.csv']; +csvwrite(filename, A); +R = csvread(filename) +A = eye(3, 2); +csvwrite(filename, A); +R = fileread(filename) +``` + +## See also + +[csvread](csvread.md), [dlmread](dlmread.md), [fileread](../stream_manager/fileread.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.0.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/spreadsheet/detectImportOptions.md b/en/spreadsheet/detectImportOptions.md new file mode 100644 index 00000000..f73542b1 --- /dev/null +++ b/en/spreadsheet/detectImportOptions.md @@ -0,0 +1,60 @@ +# detectImportOptions + +Create import options based on file content. + +## Syntax + +- options = detectImportOptions(filename) + +## Input argument + +- filename - a string: filename source. + +## Output argument + +- options - DelimitedTextImportOptions object. + +## Description + +options = detectImportOptions(filename) identifies a table in a file and returns an import options object.
+You can customize this object and use it with readtable, readcell or readmatrix to control how Nelson imports data as a table, cell array, or matrix.
+The type of the returned options object depends on the file's extension.
+ +Properties:
+Delimiter: Field delimiter characters. example: {','}
+LineEnding: End-of-line characters. example: {'\r\n'}
+CommentStyle: Style of comments. example: {'#'}
+EmptyLineRule: Procedure to handle empty lines. example: 'skip'
+VariableNamesLine: Variable names location. example: 1
+VariableNames: Variable names. example: {'Names' 'Age' 'Height' 'Weight'}
+RowNamesColumn: Row names location. example: 0
+DataLines: Data location, [l1 l2] Indicate the range of lines containing the data. l1 refers to the first line with data, while l2 refers to the last line. example: [2 Inf]
+ +## Example + +```matlab +Names = {'John'; 'Alice'; 'Bob'; 'Diana'}; +Age = [28; 34; 22; 30]; +Height = [175; 160; 180; 165]; +Weight = [70; 55; 80; 60]; +T = table(Names, Age, Height, Weight); +writetable(T, [tempdir,'readcell_1.csv']) +options = detectImportOptions([tempdir,'readcell_1.csv']) +C1 = readcell([tempdir,'readcell_1.csv'], options) +options.DataLines = [1 Inf] +C2 = readcell([tempdir,'readcell_1.csv'], options) +``` + +## See also + +[readcell](readcell.md), [readtable](readtable.md), [readmatrix](readmatrix.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/spreadsheet/dlmread.md b/en/spreadsheet/dlmread.md new file mode 100644 index 00000000..1e741208 --- /dev/null +++ b/en/spreadsheet/dlmread.md @@ -0,0 +1,82 @@ +# dlmread + +Read an numeric matrix from a text file file using a delimiter. + +## Syntax + +- M = dlmread(filename) +- M = dlmread(filename, delimiter) +- M = dlmread(filename, delimiter, R1, C1) +- M = dlmread(filename, delimiter, [R1 C1 R2 C2]) + +## Input argument + +- filename - a string: filename source. +- delimiter - a string: ',' , '\t', ';' delimiter. default ',' +- R1, C1 - nonnegative integer: offset. default : 0, 0 +- [R1 C1 R2 C2] - nonnegative integer: Starting row offset, starting column offset, ending row offset and ending column offset. + +## Output argument + +- M - a double matrix. + +## Description + +M = dlmread(filename, delimiter, [R1 C1 R2 C2]) reads only the data within the range specified by row offsets R1 to R2 and column offsets C1 to C2. Alternatively, you can specify the range using spreadsheet notation, such as 'A1..B6' instead of [0 0 5 1].
+M = dlmread(filename, delimiter, R1, C1) starts reading data at the row and column offsets specified by R1 and C1. For example, R1=0, C1=0 indicates the first value in the file.
+To set row and column offsets without defining a delimiter, use an empty character as a placeholder, like M = dlmread(filename, '', 3, 1).
+M = dlmread(filename, delimiter) reads data from the file using the specified delimiter and treats repeated delimiter characters as separate delimiters.
+M = dlmread(filename) reads a numeric data file in ASCII-delimited format into matrix M. The dlmread function automatically detects the delimiter from the file and consolidates consecutive white spaces into a single delimiter.
+Complex Number Importing: dlmread reads each complex number as a single unit, storing it in a complex numeric field.
+Valid forms for complex numbers are:
+ +Form: | +Example: | +
---|---|
±<real>±<imag>i|j | +3.1347-2.1i | +
±<imag>i|j | +-2.1j | +
Note: Whitespace within a complex number is not allowed; dlmread interprets any embedded spaces as field delimiters.
+ +## Examples + +```matlab +A = [Inf, -Inf, NaN, 3]; +filename = [tempdir(), 'dlmread_example.csv']; +dlmwrite(filename, A); +R = dlmread(filename) +``` + +Read a CSV file with a header + +```matlab +filename = [tempdir(), 'dlmread_example.csv']; +filewrite(filename, ['A,B,C,D,E,F',char(10)]); +A = magic(6); +dlmwrite(filename, A, '-append'); +fileread(filename) + +R = dlmread(filename, '', 1, 0) +``` + +## See also + +[dlmwrite](dlmwrite.md), [fileread](../stream_manager/fileread.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/stream_manager/dlmwrite.md b/en/spreadsheet/dlmwrite.md similarity index 90% rename from en/stream_manager/dlmwrite.md rename to en/spreadsheet/dlmwrite.md index 1c1abae0..201f94b5 100644 --- a/en/stream_manager/dlmwrite.md +++ b/en/spreadsheet/dlmwrite.md @@ -32,9 +32,9 @@ Write an numeric matrix to a text file file using a delimiter. ```matlab A = [Inf, -Inf, NaN, 3]; -filename = [tempdir(), 'dlwrite_example.csv']; +filename = [tempdir(), 'dlmwrite_example.csv']; dlmwrite(filename, A); -R = fileread(filename) +R = dlmread(filename) A = eye(3, 2); dlmwrite(filename, A, ';', 4, 5); R = fileread(filename) @@ -42,7 +42,7 @@ R = fileread(filename) ## See also -[fileread](fileread.md). +[dlmread](dlmread.md), [fileread](../stream_manager/fileread.md). ## History diff --git a/en/spreadsheet/readcell.md b/en/spreadsheet/readcell.md new file mode 100644 index 00000000..204ae074 --- /dev/null +++ b/en/spreadsheet/readcell.md @@ -0,0 +1,61 @@ +# readcell + +Create cell array from file. + +## Syntax + +- C = readcell(filename) +- C = readcell(filename, opts) + +## Input argument + +- filename - a string: filename source. +- opts - DelimitedTextImportOptions object + +## Output argument + +- C - a cell. + +## Description + +C = readcell(filename) creates a cell array by importing column-oriented data from a text or spreadsheet file.
+C = readcell(filename, opts) creates a cell array using the settings defined in the opts import options object. The import options object allows you to customize how readcell interprets the file, offering greater control, improved performance, and the ability to reuse the configuration compared to the default syntax.
+ +## Examples + +```matlab +Names = {'John'; 'Alice'; 'Bob'; 'Diana'}; +Age = [28; 34; 22; 30]; +Height = [175; 160; 180; 165]; +Weight = [70; 55; 80; 60]; +T = table(Names, Age, Height, Weight); +writetable(T, [tempdir,'readcell_1.csv']) +C = readcell([tempdir,'readcell_1.csv']) +``` + +```matlab +Names = {'John'; 'Alice'; 'Bob'; 'Diana'}; +Age = [28; 34; 22; 30]; +Height = [175; 160; 180; 165]; +Weight = [70; 55; 80; 60]; +T = table(Names, Age, Height, Weight); +writetable(T, [tempdir,'readcell_1.csv']) +options = detectImportOptions([tempdir,'readcell_1.csv']); +C1 = readcell([tempdir,'readcell_1.csv'], options) +options.DataLines = [1 Inf] +C2 = readcell([tempdir,'readcell_1.csv'], options) +``` + +## See also + +[writecell](writecell.md), [detectImportOptions](detectImportOptions.md), [writetable](writetable.md), [readtable](readtable.md), [fileread](../stream_manager/fileread.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/spreadsheet/readmatrix.md b/en/spreadsheet/readmatrix.md new file mode 100644 index 00000000..6156d328 --- /dev/null +++ b/en/spreadsheet/readmatrix.md @@ -0,0 +1,61 @@ +# readmatrix + +Create matrix array from file. + +## Syntax + +- M = readmatrix(filename) +- M = readmatrix(filename, opts) +- M = readmatrix(filename, opts, 'OutputType', type) + +## Input argument + +- filename - a string: an existing filename source. +- opts - DelimitedTextImportOptions object +- type - a string: 'double', 'single', 'char', 'string', 'int8', 'int16', 'int32', 'int64', 'uint8', 'uint16', 'uint32', 'uint64'. + +## Output argument + +- M - a matrix. + +## Description + +M = readmatrix(filename) creates a matrix array by importing column-oriented data from a text or spreadsheet file.
+M = readmatrix(filename, opts) creates a matrix array using the settings defined in the opts import options object. The import options object allows you to customize how readmatrix interprets the file, offering greater control, improved performance, and the ability to reuse the configuration compared to the default syntax.
+ +## Examples + +```matlab +filename = [tempdir,'readmatrix_1.csv']; +Names = {'John'; 'Alice'; 'Bob'; 'Diana'}; +Age = [28; 34; 22; 30]; +Height = [175; 160; 180; 165]; +Weight = [70; 55; 80; 60]; +T = table(Names, Age, Height, Weight); +writetable(T, filename) +M = readmatrix(filename) +``` + +```matlab +filename = [tempdir,'readmatrix_2.csv']; +M = magic(6); +writematrix(M, filename) +options = detectImportOptions(filename) +options.DataLines = [2 4]; +M2 = readmatrix(filename, options, 'OutputType', 'int64') +M3 = readmatrix(filename, options, 'OutputType', 'char') +``` + +## See also + +[writematrix](writematrix.md), [detectImportOptions](detectImportOptions.md), [writetable](writetable.md), [readtable](readtable.md), [fileread](../stream_manager/fileread.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/spreadsheet/readtable.md b/en/spreadsheet/readtable.md new file mode 100644 index 00000000..5cc6ca98 --- /dev/null +++ b/en/spreadsheet/readtable.md @@ -0,0 +1,61 @@ +# readtable + +Create table from file. + +## Syntax + +- T = readtable(filename) +- T = readtable(filename, opts) + +## Input argument + +- filename - a string: filename source. +- opts - DelimitedTextImportOptions object + +## Output argument + +- T - a table. + +## Description + +T = readtable(filename) creates a table by importing column-oriented data from a text or spreadsheet file.
+T = readtable(filename, opts) creates a table using the settings defined in the opts import options object. The import options object allows you to customize how readtable interprets the file, offering greater control, improved performance, and the ability to reuse the configuration compared to the default syntax.
+ +## Examples + +```matlab +Names = {'John'; 'Alice'; 'Bob'; 'Diana'}; +Age = [28; 34; 22; 30]; +Height = [175; 160; 180; 165]; +Weight = [70; 55; 80; 60]; +T1 = table(Names, Age, Height, Weight); +writetable(T1, [tempdir,'readtable_1.csv']) +T2 = readtable([tempdir,'readtable_1.csv']) +``` + +```matlab +Names = {'John'; 'Alice'; 'Bob'; 'Diana'}; +Age = [28; 34; 22; 30]; +Height = [175; 160; 180; 165]; +Weight = [70; 55; 80; 60]; +T = table(Names, Age, Height, Weight); +writetable(T, [tempdir,'readtable_1.csv']) +options = detectImportOptions([tempdir,'readtable_1.csv']); +T1 = readtable([tempdir,'readtable_1.csv'], options) +options.DataLines = [1 Inf] +T2 = readtable([tempdir,'readtable_1.csv'], options) +``` + +## See also + +[writetable](writetable.md), [detectImportOptions](detectImportOptions.md), [readcell](readcell.md), [fileread](../stream_manager/fileread.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/spreadsheet/writecell.md b/en/spreadsheet/writecell.md new file mode 100644 index 00000000..aceaa312 --- /dev/null +++ b/en/spreadsheet/writecell.md @@ -0,0 +1,130 @@ +# writecell + +Write a cell to a file. + +## Syntax + +- writecell(C) +- writecell(C, filename) +- writecell(..., Name, Value) + +## Input argument + +- C - an cell array. +- filename - a string: filename destination. +- Name, Value - Name-Value Arguments + +## Description + +writecell writes an cell array to an CSV format file.
+writecell does not support sparse matrices.
+writecell outputs numeric data in the long G format.
+ +Available Name-Value Arguments
+ +Name-value pairs must follow all other arguments.
+The order of name-value pairs doesn't matter
+Delimiter and QuoteStrings options only apply to delimited text files.
+ +FileType: Specifies the type of output file
+Syntax: 'FileType','text'
+Supports delimited text files (.txt, .dat, .csv)
+ +WriteMode: Controls how data is written to the file
+Syntax: 'WriteMode', mode
+Options:
+'overwrite' (default) - Creates new file or replaces existing content
+'append' - Adds data to end of existing file
+If the target file doesn't exist, a new file will be created regardless of mode.
+ +Delimiter: Defines the character used to separate fields
+Syntax: 'Delimiter', delimiter
+Available Delimiters: Only applicable for delimited text files.
+Specifier | +Alternative | +Description | +
---|---|---|
+ ','
+ |
+
+ 'comma'
+ |
+ Comma (default) | +
+ ' '
+ |
+
+ 'space'
+ |
+ Space character | +
+ '\t'
+ |
+
+ 'tab'
+ |
+ Tab character | +
+ ';'
+ |
+
+ 'semi'
+ |
+ Semicolon | +
+ '|'
+ |
+
+ 'bar'
+ |
+ Vertical bar | +
QuoteStrings: Controls text quoting behavior (Only applicable for delimited text files).
++ 'QuoteStrings', option +
+with options
+'minimal' (default) Quotes only text containing delimiters, line endings, or quotes.
+'all' Quotes all text variables.
+'none' Uses no quotes.
+ +## Example + +```matlab +C = {'ID', 'Product', 'Price'; 1, 'Laptop', 799.99; 2, 'Phone', 699.49; 3, 'Tablet', 499.00}; +filename = [tempdir(), 'writecell_example.csv']; +writecell(C, filename); +R = fileread(filename) +``` + +## See also + +[readcell](readcell.md), [csvwrite](csvwrite.md), [dlmread](dlmread.md), [fileread](../stream_manager/fileread.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/spreadsheet/writematrix.md b/en/spreadsheet/writematrix.md new file mode 100644 index 00000000..f1992e5d --- /dev/null +++ b/en/spreadsheet/writematrix.md @@ -0,0 +1,130 @@ +# writematrix + +Write a matrix to a file. + +## Syntax + +- writematrix(M) +- writematrix(M, filename) +- writematrix(..., Name, Value) + +## Input argument + +- M - an numeric or logical matrix. +- filename - a string: filename destination. +- Name, Value - Name-Value Arguments + +## Description + +writematrix writes an numeric matrix to an CSV format file.
+writematrix does not support sparse matrices.
+writematrix outputs numeric data in the long G format.
+ +Available Name-Value Arguments
+ +Name-value pairs must follow all other arguments.
+The order of name-value pairs doesn't matter
+Delimiter and QuoteStrings options only apply to delimited text files.
+ +FileType: Specifies the type of output file
+Syntax: 'FileType','text'
+Supports delimited text files (.txt, .dat, .csv)
+ +WriteMode: Controls how data is written to the file
+Syntax: 'WriteMode', mode
+Options:
+'overwrite' (default) - Creates new file or replaces existing content
+'append' - Adds data to end of existing file
+If the target file doesn't exist, a new file will be created regardless of mode.
+ +Delimiter: Defines the character used to separate fields
+Syntax: 'Delimiter', delimiter
+Available Delimiters: Only applicable for delimited text files.
+Specifier | +Alternative | +Description | +
---|---|---|
+ ','
+ |
+
+ 'comma'
+ |
+ Comma (default) | +
+ ' '
+ |
+
+ 'space'
+ |
+ Space character | +
+ '\t'
+ |
+
+ 'tab'
+ |
+ Tab character | +
+ ';'
+ |
+
+ 'semi'
+ |
+ Semicolon | +
+ '|'
+ |
+
+ 'bar'
+ |
+ Vertical bar | +
QuoteStrings: Controls text quoting behavior (Only applicable for delimited text files).
++ 'QuoteStrings', option +
+with options
+'minimal' (default) Quotes only text containing delimiters, line endings, or quotes.
+'all' Quotes all text variables.
+'none' Uses no quotes.
+ +## Example + +```matlab +A = [Inf, -Inf, NaN, 3]; +filename = [tempdir(), 'writematrix_example.csv']; +writematrix(A, filename); +R = fileread(filename) +``` + +## See also + +[readcell](readcell.md), [csvwrite](csvwrite.md), [dlmread](dlmread.md), [fileread](../stream_manager/fileread.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/spreadsheet/writetable.md b/en/spreadsheet/writetable.md new file mode 100644 index 00000000..b93a3e43 --- /dev/null +++ b/en/spreadsheet/writetable.md @@ -0,0 +1,77 @@ +# writetable + +Write table to file. + +## Syntax + +- writetable(T) +- writetable(T, filename) +- writetable(..., Name, Value) + +## Input argument + +- T - A table to be written to a file. +- filename - A string specifying the destination filename. + +## Description + +writetable(T) writes the table T to a comma-delimited text file.
+The file name is derived from the table's workspace variable name, with the .txt
extension appended.
If the file name cannot be derived from the table name, the default file name table.txt
is used.
Output formats supported:
+To specify the file name explicitly, use writetable(T, filename). The file format is determined by the file extension:
+Additional options: Use writetable(..., Name, Value) for customization:
+false
).'text'
or 'xml'
).true
).'overwrite'
or 'append'
).','
, '\t'
, etc.).'minimal'
, 'all'
, or 'none'
).'Attribute'
).'row'
).'table'
).res = join(str) combines the elements of str into a single text by joining them with a space character as the default delimiter.
+The input, str, can be either a string array or a cell array of character vectors. The output, res, has the same data type as str.
+If str is a 1-by-N or N-by-1 string array or cell array, res will be a string scalar or a cell array containing a single character vector.
+If str is an M-by-N string array or cell array, res will be an M-by-1 string array or cell array.
+For arrays of any size, join concatenates elements along the last dimension with a size greater than 1.
+res = join(str, delimiter) joins the elements of str using the specified delimiter instead of the default space character.
+If delimiter is an array of multiple delimiters, and str has N elements along the joining dimension, delimiter must have N–1 elements along the same dimension. All other dimensions of delimiter must either have size 1 or match the size of the corresponding dimensions of str.
+res = join(str, dim) combines the elements of str along the specified dimension dim.
+res = join(str, delimiter, dim) joins the elements of str along the specified dimension dim, using delimiter to separate them.
+ +## Example + +```matlab +str = ["x","y","z"; "a","b","c"]; +delimiters = [" + "," = "; " - "," = "]; +R = join(str, delimiters) +``` + +## See also + +[append](append.md), [strcat](strcat.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/string/strcat.md b/en/string/strcat.md index 2f3ef650..955034fa 100644 --- a/en/string/strcat.md +++ b/en/string/strcat.md @@ -34,7 +34,7 @@ C = strcat(A, B) ## See also -[append](append.md). +[append](append.md), [join](join.md). ## History diff --git a/en/table/1_accessing_manipulating_table.md b/en/table/1_accessing_manipulating_table.md index 0e0789fb..d656af40 100644 --- a/en/table/1_accessing_manipulating_table.md +++ b/en/table/1_accessing_manipulating_table.md @@ -32,6 +32,12 @@You can concatenate tables vertically (one below the other) using the vertcat function. This function combines tables by appending the rows of one table to the rows of another table.
see examples: Vertical Concatenation
++ Convert variable types +
+You can convert table variables by using the VariableTypes property.
+see examples: VariableTypes example
+Summary
@@ -123,15 +129,33 @@ T3 = table([3; 4], {'C'; 'D'}, 'VariableNames', {'ID', 'Label'}); T_vert = [T1; T3] % or T_vert = vertcat(T1, T3) ``` +Convert variable types + +```matlab +Names = {'John'; 'Alice'; 'Bob'; 'Diana'}; +Age = [28; 34; 22; 30]; +Height = [175; 160; 180; 165]; +Weight = [70; 55; 80; 60]; +T = table(Names, Age, Height, Weight); +T.Properties.VariableTypes +T{:,1} +T{:,2} +T.Properties.VariableTypes = ["string" "int8" "double" "double"]; +T{:,1} +T{:,2} +T.Properties.VariableTypes +``` + ## See also [table](table.md), [Direct computation with Table](2_direct_compution_with_table.md). ## History -| Version | Description | -| ------- | --------------- | -| 1.8.0 | initial version | +| Version | Description | +| ------- | ---------------------- | +| 1.8.0 | initial version | +| 1.10.0 | VariableTypes property | ## Author diff --git a/en/table/2_direct_compution_with_table.md b/en/table/2_direct_compution_with_table.md index bc59e7d8..716954c1 100644 --- a/en/table/2_direct_compution_with_table.md +++ b/en/table/2_direct_compution_with_table.md @@ -12,7 +12,7 @@ ## Example -Adding a New Column +Direct computation on Tables ```matlab % Create a sample table with sensor data diff --git a/en/table/3_read_write_table.md b/en/table/3_read_write_table.md new file mode 100644 index 00000000..39584b0e --- /dev/null +++ b/en/table/3_read_write_table.md @@ -0,0 +1,58 @@ +# Read/Write table to files + +## Description + +Nelson provides extensive capabilities for reading and writing tables to files, supporting both text-based and binary storage formats to meet different data management needs.
+Text files (.csv, .txt, etc.):
+Binary file:
+Binary format is recommended for preserving exact numeric precision and working with large datasets.
+ +## Examples + +Read/Write table to .nh5 file + +```matlab +% Create a sample table with sensor data +T = table([1.5; -2.3; 4.7], [0.5; 1.1; -0.7], [-1; 2; 3], 'VariableNames', {'Voltage', 'Current', 'Resistance'}); +R = T; +filename = [tempdir(), 'table_example.nh5']; +save(filename, '-nh5', 'T'); +clear T +load(filename, 'T'); +assert(isequal(T, R)); +T +``` + +Read/Write table to text file + +```matlab +% Create a sample table with sensor data +T = table([1.5; -2.3; 4.7], [0.5; 1.1; -0.7], [-1; 2; 3], 'VariableNames', {'Voltage', 'Current', 'Resistance'}); +filename = [tempdir(), 'table_example.csv']; +writetable(T, filename); +T2 = readtable(filename); +``` + +## See also + +[writetable](../spreadsheet/writetable.md), [readtable](../spreadsheet/readtable.md), [load](../stream_manager/load.md), [save](../stream_manager/save.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/table/README.md b/en/table/README.md index 0a74a001..a1ce045f 100644 --- a/en/table/README.md +++ b/en/table/README.md @@ -8,6 +8,7 @@ Tables of arrays with named columns, each potentially containing different data - [Accessing and Manipulating Tables in Nelson](1_accessing_manipulating_table.md) - [Direct computation with Table](2_direct_compution_with_table.md) +- [Read/Write table to files](3_read_write_table.md) - [array2table](array2table.md) - Convert homogeneous array to table. - [cell2table](cell2table.md) - Convert cell array to table. - [head](head.md) - Get top rows of table or array. diff --git a/en/table/SUMMARY.md b/en/table/SUMMARY.md index a3529e45..a2b1531e 100644 --- a/en/table/SUMMARY.md +++ b/en/table/SUMMARY.md @@ -1,6 +1,7 @@ - [table](README.md) - [Accessing and Manipulating Tables in Nelson](1_accessing_manipulating_table.md) - [Direct computation with Table](2_direct_compution_with_table.md) + - [Read/Write table to files](3_read_write_table.md) - [array2table](array2table.md) - [cell2table](cell2table.md) - [head](head.md) diff --git a/en/time/README.md b/en/time/README.md index d5dce2ea..0ce1c826 100644 --- a/en/time/README.md +++ b/en/time/README.md @@ -16,8 +16,11 @@ time functions - [datevec](datevec.md) - Convert a serial date number into a date vector. - [eomday](eomday.md) - Returns last day of month. - [etime](etime.md) - Time elapsed between date vectors. +- [hour](hour.md) - Hours part of the input date and time. - [leapyear](leapyear.md) - Determine leap year. +- [minute](minute.md) - Minutes part of the input date and time. - [now](now.md) - Returns current date under the form of a Unix hour. +- [second](second.md) - Seconds part of the input date and time. - [sleep](sleep.md) - Suspend code execution. - [tic](tic.md) - Starts a stopwatch timer. - [time](time.md) - Return the current time as the number of seconds or nanoseconds since the epoch. diff --git a/en/time/SUMMARY.md b/en/time/SUMMARY.md index 2b8f67a3..60ebcce7 100644 --- a/en/time/SUMMARY.md +++ b/en/time/SUMMARY.md @@ -9,8 +9,11 @@ - [datevec](datevec.md) - [eomday](eomday.md) - [etime](etime.md) + - [hour](hour.md) - [leapyear](leapyear.md) + - [minute](minute.md) - [now](now.md) + - [second](second.md) - [sleep](sleep.md) - [tic](tic.md) - [time](time.md) diff --git a/en/time/datenum.md b/en/time/datenum.md index 2b57b9b3..c8034326 100644 --- a/en/time/datenum.md +++ b/en/time/datenum.md @@ -15,7 +15,7 @@ Return the date/time input as a serial day number. ## Input argument - datevec - a vector: [Y, M, D, H, MN, S] or matrix N x 6. -- format - a string: date format. +- format - a string specifying the date format, or leave it empty ('') for automatic format detection. - datestr - a string, cell of string or string array: text representing a date. - Y, M, D, H, MN, S - double: Year, Month, Day, Hours, Minutes, Secondes (scalar or vector). - pivotYear: Start year of 100-year date range - integer value or present minus 50 years (default). @@ -154,10 +154,11 @@ d = datenum(["04–Aug-1973 12:01:18"; "04–Aug-1974 11:01:18"]) ## History -| Version | Description | -| ------- | ----------------------------- | -| 1.0.0 | initial version | -| 1.8.0 | date string parsing extended. | +| Version | Description | +| ------- | ------------------------------------- | +| 1.0.0 | initial version | +| 1.8.0 | date string parsing extended. | +| 1.10.0 | added: format '' means try to detect. | ## Author diff --git a/en/time/hour.md b/en/time/hour.md new file mode 100644 index 00000000..89406b60 --- /dev/null +++ b/en/time/hour.md @@ -0,0 +1,43 @@ +# hour + +Hours part of the input date and time. + +## Syntax + +- h = hour(t) +- h = hour(t, formatIn) + +## Input argument + +- t - serial date number or text inputs +- formatIn - valid date format + +## Output argument + +- h - a double: integer value. + +## Description + +h = hour(t) extracts the hour component from each date and time specified in t.
+The output h is a double array containing integer values ranging from 0 to 23.
+ +## Example + +```matlab +h = hour(738427.656845093) +h = hour("2021/09/28 15:45:51", 'YYYY/M/DD HH:MM:SS') +``` + +## See also + +[minute](minute.md), [second](second.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/time/minute.md b/en/time/minute.md new file mode 100644 index 00000000..c8b79cae --- /dev/null +++ b/en/time/minute.md @@ -0,0 +1,43 @@ +# minute + +Minutes part of the input date and time. + +## Syntax + +- m = minute(t) +- m = minute(t, formatIn) + +## Input argument + +- t - serial date number or text inputs +- formatIn - valid date format + +## Output argument + +- m - a double: integer value. + +## Description + +m = minute(t) extracts the minute component from each date and time specified in t.
+The output m is a double array containing integer values ranging from 0 to 59.
+ +## Example + +```matlab +m = minute(738427.656845093) +m = minute("2021/09/28 15:45:51", 'YYYY/M/DD HH:MM:SS') +``` + +## See also + +[hour](hour.md), [second](second.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/time/second.md b/en/time/second.md new file mode 100644 index 00000000..10be53b2 --- /dev/null +++ b/en/time/second.md @@ -0,0 +1,43 @@ +# second + +Seconds part of the input date and time. + +## Syntax + +- s = second(t) +- s = second(t, formatIn) + +## Input argument + +- t - serial date number or text inputs +- formatIn - valid date format + +## Output argument + +- s - a double: integer value. + +## Description + +s = second(t) extracts the second component from each date and time specified in t.
+The output s is a double array containing integer values ranging from 0 to 59.
+ +## Example + +```matlab +s = second(738427.656845093) +s = second("2021/09/28 15:45:51", 'YYYY/M/DD HH:MM:SS') +``` + +## See also + +[minute](minute.md), [hour](hour.md). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/validators/README.md b/en/validators/README.md index 03889a7f..f79ccb85 100644 --- a/en/validators/README.md +++ b/en/validators/README.md @@ -7,6 +7,7 @@ Validators validators functions - [mustBeA](mustBeA.md) - Checks that input value comes from one of specified classes. +- [mustBeColumn](mustBeColumn.md) - Checks that value is a column vector or raise an error. - [mustBeFile](mustBeFile.md) - Checks that input path refers to file. - [mustBeFinite](mustBeFinite.md) - Checks that value is finite or raise an error. - [mustBeFloat](mustBeFloat.md) - Checks that value is floating-point or raise an error. @@ -19,6 +20,7 @@ validators functions - [mustBeLessThanOrEqual](mustBeLessThanOrEqual.md) - Checks that value is less than or equal to another value or issue error. - [mustBeLogical](mustBeLogical.md) - Checks that value is logical or raise an error. - [mustBeLogicalScalar](mustBeLogicalScalar.md) - Checks that value is logical scalar or raise an error. +- [mustBeMatrix](mustBeMatrix.md) - Checks that value is a matrix or raise an error. - [mustBeMember](mustBeMember.md) - Checks that value is member of specified array or issue error. - [mustBeNegative](mustBeNegative.md) - Checks that value is negative or raise an error. - [mustBeNonNan](mustBeNonNan.md) - Checks that value is not NaN. @@ -33,6 +35,7 @@ validators functions - [mustBeNumericOrLogical](mustBeNumericOrLogical.md) - Checks that input is numeric or logical. - [mustBePositive](mustBePositive.md) - Checks that value is positive or raise an error. - [mustBeReal](mustBeReal.md) - Checks that value is real. +- [mustBeRow](mustBeRow.md) - Checks that value is a row vector or raise an error. - [mustBeScalarOrEmpty](mustBeScalarOrEmpty.md) - Checks that value is scalar or empty or raise an error. - [mustBeText](mustBeText.md) - Checks that value is piece of text or raise an error. - [mustBeTextScalar](mustBeTextScalar.md) - Checks that value is single piece of text or raise an error. diff --git a/en/validators/SUMMARY.md b/en/validators/SUMMARY.md index 634f75b8..c27673cd 100644 --- a/en/validators/SUMMARY.md +++ b/en/validators/SUMMARY.md @@ -1,5 +1,6 @@ - [validators](README.md) - [mustBeA](mustBeA.md) + - [mustBeColumn](mustBeColumn.md) - [mustBeFile](mustBeFile.md) - [mustBeFinite](mustBeFinite.md) - [mustBeFloat](mustBeFloat.md) @@ -12,6 +13,7 @@ - [mustBeLessThanOrEqual](mustBeLessThanOrEqual.md) - [mustBeLogical](mustBeLogical.md) - [mustBeLogicalScalar](mustBeLogicalScalar.md) + - [mustBeMatrix](mustBeMatrix.md) - [mustBeMember](mustBeMember.md) - [mustBeNegative](mustBeNegative.md) - [mustBeNonNan](mustBeNonNan.md) @@ -26,6 +28,7 @@ - [mustBeNumericOrLogical](mustBeNumericOrLogical.md) - [mustBePositive](mustBePositive.md) - [mustBeReal](mustBeReal.md) + - [mustBeRow](mustBeRow.md) - [mustBeScalarOrEmpty](mustBeScalarOrEmpty.md) - [mustBeText](mustBeText.md) - [mustBeTextScalar](mustBeTextScalar.md) diff --git a/en/validators/mustBeColumn.md b/en/validators/mustBeColumn.md new file mode 100644 index 00000000..ec8ab935 --- /dev/null +++ b/en/validators/mustBeColumn.md @@ -0,0 +1,40 @@ +# mustBeColumn + +Checks that value is a column vector or raise an error. + +## Syntax + +- mustBeColumn(var) +- mustBeColumn(var, argPosition) +- C++: void mustBeColumn(const ArrayOfVector& args, int argPosition) + +## Input argument + +- var - a variable: all supported types and classes that implement iscolumn method. +- argPosition - a positive integer value: Position of input argument. + +## Description + +mustBeColumn checks that value is a column vector or raise an error.
+ +## Example + +```matlab +mustBeColumn(true) +mustBeColumn([]) +mustBeColumn(ones(3, 2, 4)) +``` + +## See also + +[iscolumn](iscolumn.html). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/validators/mustBeLogicalScalar.md b/en/validators/mustBeLogicalScalar.md index 145e4e35..0218ae6d 100644 --- a/en/validators/mustBeLogicalScalar.md +++ b/en/validators/mustBeLogicalScalar.md @@ -27,7 +27,7 @@ mustBeLogicalScalar([true false]) ## See also -[isscalar](isscalar.html), [islogical](../types/islogical.md). +[isscalar](../elementary_functions/isscalar.md), [islogical](../types/islogical.md). ## History diff --git a/en/validators/mustBeMatrix.md b/en/validators/mustBeMatrix.md new file mode 100644 index 00000000..f5e48f37 --- /dev/null +++ b/en/validators/mustBeMatrix.md @@ -0,0 +1,40 @@ +# mustBeMatrix + +Checks that value is a matrix or raise an error. + +## Syntax + +- mustBeMatrix(var) +- mustBeMatrix(var, argPosition) +- C++: void mustBeMatrix(const ArrayOfVector& args, int argPosition) + +## Input argument + +- var - a variable: all supported types and classes that implement ismatrix method. +- argPosition - a positive integer value: Position of input argument. + +## Description + +mustBeMatrix checks that value is a matrix or raise an error.
+ +## Example + +```matlab +mustBeMatrix(true) +mustBeMatrix([]) +mustBeMatrix(ones(3, 2, 4)) +``` + +## See also + +[ismatrix](ismatrix.html). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/validators/mustBeRow.md b/en/validators/mustBeRow.md new file mode 100644 index 00000000..1b3ba047 --- /dev/null +++ b/en/validators/mustBeRow.md @@ -0,0 +1,40 @@ +# mustBeRow + +Checks that value is a row vector or raise an error. + +## Syntax + +- mustBeRow(var) +- mustBeRow(var, argPosition) +- C++: void mustBeRow(const ArrayOfVector& args, int argPosition) + +## Input argument + +- var - a variable: all supported types and classes that implement isrow method. +- argPosition - a positive integer value: Position of input argument. + +## Description + +mustBeRow checks that value is a row vector or raise an error.
+ +## Example + +```matlab +mustBeRow([1, 1]) +mustBeRow([]) +mustBeRow([1; 1]) +``` + +## See also + +[isrow](isrow.html). + +## History + +| Version | Description | +| ------- | --------------- | +| 1.10.0 | initial version | + +## Author + +Allan CORNET diff --git a/en/validators/mustBeTextScalar.md b/en/validators/mustBeTextScalar.md index 85719abb..9ae78857 100644 --- a/en/validators/mustBeTextScalar.md +++ b/en/validators/mustBeTextScalar.md @@ -27,7 +27,7 @@ mustBeTextScalar("hello") ## See also -[isscalar](isscalar.html), [ischar](../types/ischar.md), [isstring](../types/isstring.md). +[isscalar](../elementary_functions/isscalar.md), [ischar](../types/ischar.md), [isstring](../types/isstring.md). ## History diff --git a/fr/README.md b/fr/README.md index 415a8733..6bae6873 100644 --- a/fr/README.md +++ b/fr/README.md @@ -1,6 +1,6 @@  -### Nelson 1.9.0.0 +### Nelson 1.10.0.0 **Nelson** est un langage de calcul numérique puissant et open-source, conçu pour offrir un environnement complet et intuitif aux ingénieurs, scientifiques et étudiants. Avec plus de 1 200 fonctions intégrées, Nelson prend en charge une large gamme de tâches, allant de l'algèbre de base aux simulations numériques avancées. diff --git a/fr/changelogs/CHANGELOG.md b/fr/changelogs/CHANGELOG.md index fae4e31a..fdd97130 100644 --- a/fr/changelogs/CHANGELOG.md +++ b/fr/changelogs/CHANGELOG.md @@ -5,6 +5,43 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 1.10.0 (2024-12-14) + +### Added + +- `detectImportOptions`: Generate import options from the file's content. +- `readtable`: Read table from file. +- `writetable`: Write table to file. +- `readcell`: Read cell array from file. +- `writecell`: write cell array to file. +- `readmatrix`: read matrix from file. +- `writematrix`: write matrix to file. +- `csvread`: Read comma-separated value (CSV) file. +- `csvwrite`: Write comma-separated value (CSV) file. +- `dlmread`: Read ASCII-delimited file of numeric data into matrix. +- `realmin`: Smallest normalized floating-point number. +- [#1288](http://github.com/nelson-lang/nelson/issues/1288) `mustBeMatrix`, `mustBeRow`, `mustBeColumn` validator functions. +- `join`: Combine strings. +- [#1292](http://github.com/nelson-lang/nelson/issues/1292) Large Table Display. +- [#1290](http://github.com/nelson-lang/nelson/issues/1290) `VariableTypes` property for table: Specify the data types of table in Nelson. +- `hour`, `minute`, `second` component of input date and time. + +### Changed + +- `narginchk`, `nargoutchk` support for check only minimun arguments `narginchk(3, Inf)`. +- Fedora 41 CI +- `title`: `Visible` property is inherited from the parent if not explicitly defined. +- i18n: migration PO files to JSON. +- `dlmwrite`: rework the function to be more fast and robust. +- `strjust`: rework the function to be more fast and robust. +- `datenum`: support '' as format for compatibility. + +### Fixed + +- [#1303](http://github.com/nelson-lang/nelson/issues/1303) `datevec` result must be normalized. +- [#1297](http://github.com/nelson-lang/nelson/issues/1297) some features have no help files. +- [#1276](http://github.com/nelson-lang/nelson/issues/1276) micromamba macos build. + ## 1.9.0 (2024-10-26) ### Added