1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520
|
Summary of important user-visible changes for version 3.8:
---------------------------------------------------------
** One of the biggest new features for Octave 3.8 is a graphical user
interface. It is the one thing that users have requested most
often over the last few years and now it is almost ready. But
because it is not quite as polished as we would like, we have
decided to wait until the 4.0.x release series before making the
GUI the default interface (until then, you can use the --force-gui
option to start the GUI).
Given the length of time and the number of bug fixes and
improvements since the last major release Octave, we also decided
against delaying the release of all these new improvements any
longer just to perfect the GUI. So please enjoy the 3.8 release of
Octave and the preview of the new GUI. We believe it is working
reasonably well, but we also know that there are some obvious rough
spots and many things that could be improved.
WE NEED YOUR HELP. There are many ways that you can help us fix
the remaining problems, complete the GUI, and improve the overall
user experience for both novices and experts alike:
* If you are a skilled software developer, you can help by
contributing your time to help with Octave's development. See
http://octave.org/get-involved.html for more information.
* If Octave does not work properly, you are encouraged
report the problems you find. See http://octave.org/bugs.html
for more information about how to report problems.
* Whether you are a user or developer, you can help to fund the
project. Octave development takes a lot of time and expertise.
Your contributions help to ensure that Octave will continue to
improve. See http://octave.org/donate.html for more details.
We hope you find Octave to be useful. Please help us make it even
better for the future!
** Octave now uses OpenGL graphics by default with FLTK widgets. If
OpenGL libraries or FLTK widgets are not available when Octave is
built, gnuplot is used. You may also choose to use gnuplot for
graphics by executing the command
graphics_toolkit ("gnuplot")
Adding this command to your ~/.octaverc file will set the default
for each session.
** Printing or saving figures with OpenGL graphics requires the
gl2ps library which is no longer distributed with Octave. The
software is widely available in most package managers. If a
pre-compiled package does not exist for your system, you can find
the current sources at http://www.geuz.org/gl2ps/.
** Octave now supports nested functions with scoping rules that are
compatible with Matlab. A nested function is one declared and defined
within the body of another function. The nested function is only
accessible from within the enclosing function which makes it one
method for making private functions whose names do not conflict with those
in the global namespace (See also subfunctions and private functions).
In addition, variables in the enclosing function are visible within the
nested function. This makes it possible to have a pseudo-global variable
which can be seen by a group of functions, but which is not visible in
the global namespace.
Example:
function outerfunc (...)
...
function nested1 (...)
...
function nested2 (...)
...
endfunction
endfunction
function nested3 (...)
...
endfunction
endfunction
** Line continuations inside character strings have changed.
The sequence '...' is no longer recognized as a line continuation
inside a character string. A backslash '\' followed by a newline
character is no longer recognized as a line continuation inside
single-quoted character strings. Inside double-quoted character
strings, a backslash followed by a newline character is still
recognized as a line continuation, but the backslash character must
be followed *immediately* by the newline character. No whitespace or
end-of-line comment may appear between them.
** Backslash as a continuation marker outside of double-quoted strings
is now deprecated.
Using '\' as a continuation marker outside of double quoted strings
is now deprecated and will be removed from a future version of
Octave. When that is done, the behavior of
(a \
b)
will be consistent with other binary operators.
** Redundant terminal comma accepted by parser
A redundant terminal comma is now accepted in matrix
definitions which allows writing code such as
[a,...
b,...
c,...
] = deal (1,2,3)
** Octave now has limited support for named exceptions
The following syntax is now accepted:
try
statements
catch exception-id
statements
end
The exception-id is a structure with the fields "message" and
"identifier". For example
try
error ("Octave:error-id", "error message");
catch myerr
printf ("identifier: %s\n", myerr.identifier);
printf ("message: %s\n", myerr.message);
end_try_catch
When classdef-style classes are added to Octave, the exception-id
will become an MException object.
** Warning states may now be set temporarily, until the end of the
current function, using the syntax
warning STATE ID "local"
in which STATE may be "on", "off", or "error". Changes to warning
states that are set locally affect the current function and all
functions called from the current scope. The previous warning state
is restored on return from the current function. The "local"
option is ignored if used in the top-level workspace.
** Warning IDs renamed:
Octave:array-as-scalar => Octave:array-to-scalar
Octave:array-as-vector => Octave:array-to-vector
** 'emptymatch', 'noemptymatch' options added to regular expressions.
With this addition Octave now accepts the entire set of Matlab options
for regular expressions. 'noemptymatch' is the default, but 'emptymatch'
has certain uses where you need to match an assertion rather than actual
characters. For example,
regexprep ('World', '^', 'Hello ', 'emptymatch')
=> Hello World
where the pattern is actually the assertion '^' or start-of-line.
** For compatibility with Matlab, the regexp, regexpi, and regexprep
functions now process backslash escape sequences in single-quoted pattern
strings. In addition, the regexprep function now processes backslash
escapes in single-quoted replacement strings. For example,
regexprep (str, '\t', '\n')
would search the variable str for a TAB character (escape sequence \t)
and replace it with a NEWLINE (escape sequence \n). Previously the
expression would have searched for a literal '\' followed by 't' and
replaced the two characters with the sequence '\', 'n'.
** A TeX parser has been implemented for the FLTK toolkit and is the default
for any text object including titles and axis labels. The TeX parser is
supported only for display on a monitor, not for printing.
A quick summary of features:
Code Feature Example Comment
-----------------------------------------------------------------
_ subscript H_2O formula for water
^ exponent y=x^2 formula for parabola
\char symbol \beta Greek symbol beta
\fontname font \fontname{Arial} set Arial font
\fontsize fontsize \fontsize{16} set fontsize 16
\color[rgb] fontcolor \color[rgb]{1 0 1} set magenta color
\bf bold \bfBold Text bold font
\it italic \itItalic Text italic font
\sl slanted \slOblique Text slanted font
\rm normal \bfBold\rmNormal normal font
{} group {\bf Bold}Normal group objects
e^{i*\pi} = -1 group objects
** The m-files in the plot directory have been overhauled.
The plot functions now produce output that is nearly visually compatible
with Matlab. Plot performance has also increased, dramatically for some
functions such as comet and waitbar. Finally, the documentation for most
functions has been updated so it should be clearer both how to use a
function and when a function is appropriate.
** The m-files in the image directory have been overhauled.
The principal benefit is that Octave will now no longer automatically
convert images stored with integers to doubles. Storing images as uint8
or uint16 requires only 1/8 or 1/4 the memory of an image stored using
doubles. For certain operations, such as fft2, the image must still be
converted to double in order to work.
Other changes include fixes to the way indexed images are read from a
colormap depending on the image class (integer images have a -1 offset to
the colormap row number).
** The imread and imwrite functions have been completely rewritten.
The main changes relate to the alpha channel, support for reading and
writing of floating point images, implemented writing of indexed images,
and appending images to multipage image files.
The issues that may arise due to backwards incompatibility are:
* imwrite no longer interprets a length of 2 or 4 in the third dimension
as grayscale or RGB with alpha channel (a length of 4 will be saved
as a CMYK image). Alpha channel must be passed as separate argument.
* imread will always return the colormap indexes when reading an indexed
image, even if the colormap is not requested as output.
* transparency values are now inverted from previous Octave versions
(0 is for completely transparent instead of completely opaque).
In addition, the function imformats has been implemented to expand
reading and writing of images of different formats through imread
and imwrite.
** The colormap function now provides new options--"list", "register",
and "unregister"--to list all available colormap functions, and to
add or remove a function name from the list of known colormap
functions. Packages that implement extra colormaps should use these
commands with PKG_ADD and PKG_DEL statements.
** strsplit has been modified to be compatible with Matlab. There
are two instances where backward compatibility is broken.
(1) Delimiters are now string vectors, not scalars.
Octave's legacy behavior
strsplit ("1 2, 3", ", ")
ans =
{
[1,1] = 1
[1,2] = 2
[1,3] =
[1,4] = 3
}
Matlab compatible behavior
strsplit ("1 2, 3", ", ")
ans =
{
[1,1] = 1 2
[1,2] = 3
}
(2) By default, Matlab treats consecutive delimiters as a single
delimiter. By default, Octave's legacy behavior was to return an
empty string for the part between the delmiters.
Where legacy behavior is desired, the call to strsplit() may be
replaced by ostrsplit(), which is Octave's original implementation of
strsplit().
** The datevec function has been extended for better Matlab compatibility.
It now accepts string inputs in the following numerical formats: 12, 21,
22, 26, 29, 31. This is undocumented, but verifiable, Matlab behavior.
In addition, the default for formats which do not specify a date is
January 1st of the current year. The previous default was the current day,
month, and year. This may produce changes in existing scripts.
** The error function and its derivatives has been extended to accept complex
arguments. The following functions now accept complex inputs:
erf erfc erfcx
In addition two new error functions erfi (imaginary error function) and
dawson (scaled imaginary error function) have been added.
** The glpk function has been modified to reflect changes in the GLPK
library. The "round" and "itcnt" options have been removed. The
"relax" option has been replaced by the "rtest" option. The numeric
values of error codes and of some options have also changed.
** The kurtosis function has changed definition to be compatible with
Matlab. It now returns the base kurtosis instead of the "excess kurtosis".
The old behavior can be had by changing scripts to normalize with -3.
"excess kurtosis" = kurtosis (x) - 3
** The moment function has changed definition to be compatible with
Matlab. It now returns the central moment instead of the raw moment.
The old behavior can be had by passing the type argument "r" for raw.
** The default name of the Octave crash dump file is now
"octave-workspace" instead of "octave-core". The exact name can
always be customized with the octave_core_file_name function.
** A citation command has been added to display information on how to
cite Octave and packages in publications. The package system will
look for and install CITATION files from packages.
** The java package from Octave Forge is now part of core Octave. The
following new functions are available for interacting with Java
directly from Octave:
debug_java java_matrix_autoconversion
isjava java_set
java2mat java_unsigned_autoconversion
javaArray javaaddpath
javaMethod javaclasspath
javaObject javamem
java_get javarmpath
usejava
In addition, the following functions that use the Java interface
are now available (provided that Octave is compiled with support for
Java enabled):
helpdlg listdlg questdlg
inputdlg msgbox warndlg
** Other new functions added in 3.8.0:
atan2d erfi lines
base64_decode expint linsolve
base64_encode findfigs missing_component_hook
betaincinv flintmax polyeig
built_in_docstrings_file fminsearch prefdir
cmpermute gallery preferences
cmunique gco readline_re_read_init_file
colorcube hdl2struct readline_read_init_file
copyobj history_save rgbplot
dawson imformats save_default_options
dblist importdata shrinkfaces
desktop isaxes splinefit
doc_cache_create iscolormap stemleaf
ellipj isequaln strjoin
ellipke jit_debug struct2hdl
erfcinv jit_enable tetramesh
jit_startcnt waterfall
** Deprecated functions.
The following functions were deprecated in Octave 3.4 and have been
removed from Octave 3.8.
autocor dispatch is_global setstr
autocov fstat krylovb strerror
betai gammai perror values
cellidx glpkmex replot
cquad is_duplicate_entry saveimage
The following functions have been deprecated in Octave 3.8 and will
be removed from Octave 3.12 (or whatever version is the second major
release after 3.8):
default_save_options java_new
gen_doc_cache java_unsigned_conversion
interp1q javafields
isequalwithequalnans javamethods
java_convert_matrix re_read_readline_init_file
java_debug read_readline_init_file
java_invoke saving_history
The following keywords have been deprecated in Octave 3.8 and will
be removed from Octave 3.12 (or whatever version is the second major
release after 3.8):
static
The following configuration variables have been deprecated in Octave
3.8 and will be removed from Octave 3.12 (or whatever version is the
second major release after 3.8):
CC_VERSION (now GCC_VERSION)
CXX_VERSION (now GXX_VERSION)
The internal class <Octave_map> has been deprecated in Octave 3.8 and will
be removed from Octave 3.12 (or whatever version is the second major
release after 3.8). Replacement classes are <octave_map> (struct array)
or <octave_scalar_map> for a single structure.
Summary of important user-visible changes for version 3.6:
---------------------------------------------------------
** The PCRE library is now required to build Octave. If a pre-compiled
package does not exist for your system, you can find PCRE sources
at http://www.pcre.org
** The ARPACK library is no longer distributed with Octave.
If you need the eigs or svds functions you must provide an
external ARPACK through a package manager or by compiling it
yourself. If a pre-compiled package does not exist for your system,
you can find the current ARPACK sources at
http://forge.scilab.org/index.php/p/arpack-ng
** Many of Octave's binary operators (.*, .^, +, -, ...) now perform
automatic broadcasting for array operations which allows you to use
operator notation instead of calling bsxfun or expanding arrays (and
unnecessarily wasting memory) with repmat or similar idioms. For
example, to scale the columns of a matrix by the elements of a row
vector, you may now write
rv .* M
In this expression, the number of elements of rv must match the
number of columns of M. The following operators are affected:
plus + .+
minus - .-
times .*
rdivide ./
ldivide .\
power .^ .**
lt <
le <=
eq ==
gt >
ge >=
ne != ~=
and &
or |
atan2
hypot
max
min
mod
rem
xor
additionally, since the A op= B assignment operators are equivalent
to A = A op B, the following operators are also affected:
+= -= .+= .-= .*= ./= .\= .^= .**= &= |=
See the "Broadcasting" section in the new "Vectorization and Faster
Code Execution" chapter of the manual for more details.
** Octave now features a profiler, thanks to the work of Daniel Kraft
under the Google Summer of Code mentorship program. The manual has
been updated to reflect this addition. The new user-visible
functions are profile, profshow, and profexplore.
** Overhaul of statistical distribution functions
Functions now return "single" outputs for inputs of class "single".
75% reduction in memory usage through use of logical indexing.
Random sample functions now use the same syntax as rand and accept
a comma separated list of dimensions or a dimension vector.
Functions have been made Matlab-compatible with regard to special
cases (probability on boundaries, probabilities for values outside
distribution, etc.). This may cause subtle changes to existing
scripts.
negative binomial function has been extended to real, non-integer
inputs. The discrete_inv function now returns v(1) for 0 instead of
NaN. The nbincdf function has been recoded to use a closed form
solution with betainc.
** strread, textscan, and textread have been completely revamped.
They now support nearly all Matlab functionality including:
* Matlab-compatible whitespace and delimiter defaults
* Matlab-compatible options: 'whitespace', treatasempty', format
string repeat count, user-specified comment style, uneven-length
output arrays, %n and %u conversion specifiers (provisionally)
** All .m string functions have been modified for better performance or
greater Matlab compatibility. Performance gains of 15X-30X have
been demonstrated. Operations on cell array of strings no longer pay
quite as high a penalty as those on 2-D character arrays.
deblank: Now requires character or cellstr input.
strtrim: Now requires character or cellstr input.
No longer trims nulls ("\0") from string for Matlab
compatibility.
strmatch: Follows documentation precisely and ignores trailing spaces
in pattern and in string. Note that this is documented
Matlab behavior but the implementation apparently does
not always follow it.
substr: Now possible to specify a negative LEN option which
extracts to within LEN of the end of the string.
strtok: Now accepts cellstr input.
base2dec, bin2dec, hex2dec:
Now accept cellstr inputs.
dec2base, dec2bin, dec2hex:
Now accept cellstr inputs.
index, rindex:
Now accept 2-D character array input.
strsplit: Now accepts 2-D character array input.
** Geometry functions derived from Qhull (convhull, delaunay, voronoi)
have been revamped. The options passed to the underlying qhull
command have been changed for better results or for Matlab
compatibility.
convhull: Default options are "Qt" for 2D, 3D, 4D inputs
Default options are "Qt Qx" for 5D and higher
delaunay: Default options are "Qt Qbb Qc Qz" for 2D and 3D inputs
Default options are "Qt Qbb Qc Qx" for 4D and higher
voronoi: No default arguments
** Date/Time functions updated. Millisecond support with FFF format
string now supported.
datestr: Numerical formats 21, 22, 29 changed to match Matlab.
Now accepts cellstr input.
** The following warning IDs have been removed:
Octave:associativity-change
Octave:complex-cmp-ops
Octave:empty-list-elements
Octave:fortran-indexing
Octave:precedence-change
** The warning ID Octave:string-concat has been renamed to
Octave:mixed-string-concat.
** Octave now includes the following Matlab-compatible preference
functions:
addpref getpref ispref rmpref setpref
** The following Matlab-compatible handle graphics functions have been
added:
guidata uipanel uitoolbar
guihandles uipushtool uiwait
uicontextmenu uiresume waitfor
uicontrol uitoggletool
The uiXXX functions above are experimental.
Except for uiwait and uiresume, the uiXXX functions are not
supported with the FLTK+OpenGL graphics toolkit.
The gnuplot graphics toolkit does not support any of the uiXXX
functions nor the waitfor function.
** New keyword parfor (parallel for loop) is now recognized as a valid
keyword. Implementation, however, is still mapped to an ordinary
for loop.
** Other new functions added in 3.6.0:
bicg nthargout usejava
is_dq_string narginchk waitbar
is_sq_string python zscore
is_function_handle register_graphics_toolkit
loaded_graphics_toolkits recycle
** Deprecated functions.
The following functions were deprecated in Octave 3.2 and have been
removed from Octave 3.6.
create_set spcholinv splu
dmult spcumprod spmax
iscommand spcumsum spmin
israwcommand spdet spprod
lchol spdiag spqr
loadimage spfind spsum
mark_as_command sphcat spsumsq
mark_as_rawcommand spinv spvcat
spatan2 spkron str2mat
spchol splchol unmark_command
spchol2inv split unmark_rawcommand
The following functions have been deprecated in Octave 3.6 and will
be removed from Octave 3.10 (or whatever version is the second major
release after 3.6):
cut is_duplicate_entry
cor polyderiv
corrcoef shell_cmd
__error_text__ studentize
error_text sylvester_matrix
** The following functions have been modified for Matlab compatibility:
randperm
Summary of important user-visible changes for version 3.4.3:
-----------------------------------------------------------
** Octave 3.4.3 is a bug fixing release.
Summary of important user-visible changes for version 3.4.2:
-----------------------------------------------------------
** Octave 3.4.2 fixes some minor installation problems that affected
version 3.4.1.
Summary of important user-visible changes for version 3.4.1:
-----------------------------------------------------------
** Octave 3.4.1 is primarily a bug fixing release.
** IMPORTANT note about binary incompatibility in this release:
Binary compatibility for all 3.4.x releases was originally planned,
but this is impossible for the 3.4.1 release due to a bug in the way
shared libraries were built in Octave 3.4.0. Because of this bug,
.oct files built for Octave 3.4.0 must be recompiled before they
will work with Octave 3.4.1.
Given that there would be binary incompatibilities with shared
libraries going from Octave 3.4.0 to 3.4.1, the following
incompatible changes were also made in this release:
* The Perl Compatible Regular Expression (PCRE) library is now
required to build Octave.
* Octave's libraries and .oct files are now installed in
subdirectories of $libdir instead of $libexecdir.
Any future Octave 3.4.x release versions should remain binary
compatible with Octave 3.4.1 as proper library versioning is now
being used as recommended by the libtool manual.
** The following functions have been deprecated in Octave 3.4.1 and will
be removed from Octave 3.8 (or whatever version is the second major
release after 3.4):
cquad is_duplicate_entry perror strerror
** The following functions are new in 3.4.1:
colstyle gmres iscolumn isrow mgorth nproc rectangle
** The get_forge_pkg function is now private.
** The rectangle_lw, rectangle_sw, triangle_lw, and triangle_sw
functions are now private.
** The logistic_regression_derivatives and logistic_regression_likelihood
functions are now private.
** ChangeLog files in the Octave sources are no longer maintained
by hand. Instead, there is a single ChangeLog file generated from
the Mercurial version control commit messages. Older ChangeLog
information can be found in the etc/OLD-ChangeLogs directory in the
source distribution.
Summary of important user-visible changes for version 3.4:
---------------------------------------------------------
** BLAS and LAPACK libraries are now required to build Octave. The
subset of the reference BLAS and LAPACK libraries has been removed
from the Octave sources.
** The ARPACK library is now distributed with Octave so it no longer
needs to be available as an external dependency when building
Octave.
** The `lookup' function was extended to be more useful for
general-purpose binary searching. Using this improvement, the
ismember function was rewritten for significantly better
performance.
** Real, integer and logical matrices, when used in indexing, will now
cache the internal index_vector value (zero-based indices) when
successfully used as indices, eliminating the conversion penalty for
subsequent indexing by the same matrix. In particular, this means it
is no longer needed to avoid repeated indexing by logical arrays
using find for performance reasons.
** Logical matrices are now treated more efficiently when used as
indices. Octave will keep the index as a logical mask unless the
ratio of true elements is small enough, using a specialized
code. Previously, all logical matrices were always first converted
to index vectors. This results in savings in both memory and
computing time.
** The `sub2ind' and `ind2sub' functions were reimplemented as compiled
functions for better performance. These functions are now faster,
can deliver more economized results for ranges, and can reuse the
index cache mechanism described in previous paragraph.
** The built-in function equivalents to associative operators (`plus',
`times', `mtimes', `and', and `or') have been extended to accept
multiple arguments. This is especially useful for summing
(multiplying, etc.) lists of objects (of possibly distinct types):
matrix_sum = plus (matrix_list{:});
** An FTP object type based on libcurl has been implemented. These
objects allow ftp connections, downloads and uploads to be
managed. For example,
fp = ftp ("ftp.octave.org);
cd (fp, "gnu/octave");
mget (fp, "octave-3.2.3.tar.bz2");
close (fp);
** The default behavior of `assert (observed, expected)' has been
relaxed to employ less strict checking that does not require the
internals of the values to match. This avoids previously valid
tests from breaking due to new internal classes introduced in future
Octave versions.
For instance, all of these assertions were true in Octave 3.0.x
but false in 3.2.x due to new optimizations and improvements:
assert (2*linspace (1, 5, 5), 2*(1:5))
assert (zeros (0, 0), [])
assert (2*ones (1, 5), (2) (ones (1,5)))
** The behavior of library functions `ismatrix', `issquare', and
`issymmetric' has been changed for better consistency.
* The `ismatrix' function now returns true for all numeric,
logical and character 2-D or N-D matrices. Previously, `ismatrix'
returned false if the first or second dimension was zero.
Hence, `ismatrix ([])' was false,
while `ismatrix (zeros (1,2,0))' was true.
* The `issquare' function now returns a logical scalar, and is
equivalent to the expression
ismatrix (x) && ndims (x) == 2 && rows (x) == columns (x)
The dimension is no longer returned. As a result, `issquare ([])'
now yields true.
* The `issymmetric' function now checks for symmetry instead of
Hermitianness. For the latter, ishermitian was created. Also,
logical scalar is returned rather than the dimension, so
`issymmetric ([])' is now true.
** Function handles are now aware of overloaded functions. If a
function is overloaded, the handle determines at the time of its
reference which function to call. A non-overloaded version does not
need to exist.
** Overloading functions for built-in classes (double, int8, cell,
etc.) is now compatible with Matlab.
** Function handles can now be compared with the == and != operators,
as well as the `isequal' function.
** Performance of concatenation (using []) and the functions `cat',
`horzcat', and `vertcat' has been improved for multidimensional
arrays.
** The operation-assignment operators +=, -=, *= and /= now behave more
efficiently in certain cases. For instance, if M is a matrix and S a
scalar, then the statement
M += S;
will operate on M's data in-place if it is not shared by another
variable, usually increasing both time and memory efficiency.
Only selected common combinations are affected, namely:
matrix += matrix
matrix -= matrix
matrix .*= matrix
matrix ./= matrix
matrix += scalar
matrix -= scalar
matrix *= scalar
matrix /= scalar
logical matrix |= logical matrix
logical matrix &= logical matrix
where matrix and scalar belong to the same class. The left-hand
side must be a simple variable reference.
Moreover, when unary operators occur in expressions, Octave will
also try to do the operation in-place if it's argument is a
temporary expression.
** The effect of comparison operators (<, >, <=, and >=) applied to
complex numbers has changed to be consistent with the strict
ordering defined by the `max', `min', and `sort' functions. More
specifically, complex numbers are compared by lexicographical
comparison of the pairs `[abs(z), arg(z)]'. Previously, only real
parts were compared; this can be trivially achieved by converting
the operands to real values with the `real' function.
** The automatic simplification of complex computation results has
changed. Octave will now simplify any complex number with a zero
imaginary part or any complex matrix with all elements having zero
imaginary part to a real value. Previously, this was done only for
positive zeros. Note that the behavior of the complex function is
unchanged and it still produces a complex value even if the
imaginary part is zero.
** As a side effect of code refactoring in liboctave, the binary
logical operations are now more easily amenable to compiler
optimizations and are thus significantly faster.
** Octave now allows user-defined `subsasgn' methods to optimize out
redundant copies. For more information, see the manual.
** More efficient matrix division handling. Octave is now able to
handle the expressions
M' \ V
M.' \ V
V / M
(M is a matrix and V is a vector) more efficiently in certain cases.
In particular, if M is triangular, all three expressions will be
handled by a single call to xTRTRS (from LAPACK), with appropriate
flags. Previously, all three expressions required a physical
transpose of M.
** More efficient handling of certain mixed real-complex matrix
operations. For instance, if RM is a real matrix and CM a complex
matrix,
RM * CM
can now be evaluated either as
complex (RM * real (CM), RM * imag (CM))
or as
complex (RM) * CM,
depending on the dimensions. The first form requires more
temporaries and copying, but halves the FLOP count, which normally
brings better performance if RM has enough rows. Previously, the
second form was always used.
Matrix division is similarly affected.
** More efficient handling of triangular matrix factors returned from
factorizations. The functions for computing QR, LU and Cholesky
factorizations will now automatically return the triangular matrix
factors with proper internal matrix_type set, so that it won't need
to be computed when the matrix is used for division.
** The built-in `sum' function now handles the non-native summation
(i.e., double precision sum of single or integer inputs) more
efficiently, avoiding a temporary conversion of the whole input
array to doubles. Further, `sum' can now accept an extra option
argument, using a compensated summation algorithm rather than a
straightforward sum, which significantly improves precision if lots
of cancellation occurs in the summation.
** The built-in `bsxfun' function now uses optimized code for certain
cases where built-in operator handles are passed in. Namely, the
optimizations concern the operators `plus', `minus', `times',
`ldivide', `rdivide', `power', `and', `or' (for logical arrays),
the relational operators `eq', `ne', `lt', `le', `gt', `ge', and the
functions `min' and `max'. Optimizations only apply when both
operands are of the same built-in class. Mixed real/complex and
single/double operations will first convert both operands to a
common type.
** The `strfind' and `strrep' functions now have compiled
implementations, facilitating significantly more efficient searching
and replacing in strings, especially with longer patterns. The code
of `strcat' has been vectorized and is now much more efficient when
many strings are concatenated. The `strcmpi' and `strncmpi'
functions are now built-in functions, providing better performance.
** 'str2double' now has a compiled implementation and the API conforms
to Matlab. The additional Octave-specific features of returning a
boolean matrix indicating which elements were successfully converted
has been removed.
** Matlab-style ignoring input and output function arguments using
tilde (~) is now supported. Ignored output arguments may be
detected from a function using the built-in function `isargout'.
For more details, consult the manual.
** The list datatype, deprecated since the introduction of cells, has
been removed.
** The accumarray function has been optimized and is now significantly
faster in certain important cases.
** The behavior of isreal and isnumeric functions was changed to be more
Matlab-compatible.
** The integer math & conversion warnings (Octave:int-convert-nan,
Octave:int-convert-non-int-val, Octave:int-convert-overflow,
Octave:int-math-overflow) have been removed.
** rem and mod are now built-in functions. They also handle integer
types efficiently using integer arithmetic.
** Sparse indexing and indexed assignment has been mostly rewritten.
Since Octave uses compressed column storage for sparse matrices,
major attention is devoted to operations manipulating whole columns.
Such operations are now significantly faster, as well as some other
important cases.
Further, it is now possible to pre-allocate a sparse matrix and
subsequently fill it by assignments, provided they meet certain
conditions. For more information, consult the `spalloc' function,
which is no longer a mere dummy. Consequently, nzmax and nnz are no
longer always equal in Octave. Octave may also produce a matrix
with nnz < nzmax as a result of other operations, so you should
consistently use nnz unless you really want to use nzmax (i.e., the
space allocated for nonzero elements).
Sparse concatenation is also affected, and concatenating sparse
matrices, especially larger collections, is now significantly more
efficient. This applies to both the [] operator and the
cat/vertcat/horzcat functions.
** It is now possible to optionally employ the xGESDD LAPACK drivers
for computing the singular value decomposition using svd, instead
of the default xGESVD, using the configuration pseudo-variable
svd_driver. The xGESDD driver can be up to 6x times faster when
singular vectors are requested, but is reported to be somewhat less
robust on highly ill-conditioned matrices.
** Configuration pseudo-variables, such as page_screen_output or
confirm_recursive_rmdir (or the above mentioned svd_driver), now
accept a "local" option as second argument, requesting the change
to be undone when the current function returns:
function [status, msg] = rm_rf (dir)
confirm_recursive_rmdir (false, "local");
[status, msg] = rmdir (dir, "s");
...
endfunction
Upon return, confirm_recursive_rmdir will be restored to the value
it had on entry to the function, even if there were subsequent
changes to the variable in function rm_rf or any of the functions
it calls.
** pkg now accepts a -forge option for downloading and installing
packages from Octave Forge automatically. For example,
pkg install -forge general
will automatically download the latest release of the general
package and attempt to install it. No automatic resolving of
dependencies is provided. Further,
pkg list -forge
can be used to list all available packages.
** The internal data representation of structs has been completely
rewritten to make certain optimizations feasible. The field data
can now be shared between structs with equal keys but different
dimensions or values, making operations that preserve the fields
faster. Economized storage is now used for scalar structs (just
like most other scalars), making their usage more
memory-efficient. Certain array-like operations on structs
(concatenation, uniform cellfun, num2cell) have gained a
significant speed-up. Additionally, the octave_scalar_map class
now provides a simpler interface to work with scalar structs within
a C++ DLD function.
** Two new formats are available for displaying numbers:
format short eng
format long eng
Both display numbers in engineering notation, i.e., mantissa +
exponent where the exponent is a multiple of 3.
** The following functions are new in Octave 3.4:
accumdim erfcx nfields pqpnonneg uigetdir
bitpack fileread nth_element quadcc uigetfile
bitunpack fminbnd onCleanup randi uiputfile
blkmm fskipl pbaspect repelems uimenu
cbrt ifelse pie3 reset whitebg
curl ishermitian powerset rsf2csf
chop isindex ppder saveas
daspect luupdate ppint strread
divergence merge ppjumps textread
** Using the image function to view images with external programs such
as display, xv, and xloadimage is no longer supported. The
image_viewer function has also been removed.
** The behavior of struct assignments to non-struct values has been
changed. Previously, it was possible to overwrite an arbitrary
value:
a = 1;
a.x = 2;
This is no longer possible unless a is an empty matrix or cell
array.
** The dlmread function has been extended to allow specifying a custom
value for empty fields.
** The dlmread and dlmwrite functions have been modified to accept
file IDs (as returned by fopen) in addition to file names.
** Octave can now optimize away the interpreter overhead of an
anonymous function handle, if the function simply calls another
function or handle with some of its parameters bound to certain
values. Example:
f = @(x) sum (x, 1);
When f is called, the call is forwarded to @sum with the constant 1
appended, and the anonymous function call does not occur on the
call stack.
** For compatibility with Matlab, mu2lin (x) is now equivalent to
mu2lin (x, 0).
** The new function `history_control' may be used to control the way
command lines are added to the history list when Octave is using
readline for command-line editing. For example
history_control ("ignoredups")
tells Octave to avoid adding duplicate lines to the history list.
** Octave now uses the gnulib library for improved portability and to
avoid bugs in operating system functions.
** Deprecated functions.
The following functions were deprecated in Octave 3.0 and have been
removed from Octave 3.4.
beta_cdf geometric_pdf pascal_pdf
beta_inv geometric_rnd pascal_rnd
beta_pdf hypergeometric_cdf poisson_cdf
beta_rnd hypergeometric_inv poisson_inv
binomial_cdf hypergeometric_pdf poisson_pdf
binomial_inv hypergeometric_rnd poisson_rnd
binomial_pdf intersection polyinteg
binomial_rnd is_bool setstr
chisquare_cdf is_complex struct_contains
chisquare_inv is_list struct_elements
chisquare_pdf is_matrix t_cdf
chisquare_rnd is_scalar t_inv
clearplot is_square t_pdf
clg is_stream t_rnd
com2str is_struct uniform_cdf
exponential_cdf is_symmetric uniform_inv
exponential_inv is_vector uniform_pdf
exponential_pdf isstr uniform_rnd
exponential_rnd lognormal_cdf weibcdf
f_cdf lognormal_inv weibinv
f_inv lognormal_pdf weibpdf
f_pdf lognormal_rnd weibrnd
f_rnd meshdom weibull_cdf
gamma_cdf normal_cdf weibull_inv
gamma_inv normal_inv weibull_pdf
gamma_pdf normal_pdf weibull_rnd
gamma_rnd normal_rnd wiener_rnd
geometric_cdf pascal_cdf
geometric_inv pascal_inv
The following functions were deprecated in Octave 3.2 and will
be removed from Octave 3.6 (or whatever version is the second major
release after 3.2):
create_set spcholinv splu
dmult spcumprod spmax
iscommand spcumsum spmin
israwcommand spdet spprod
lchol spdiag spqr
loadimage spfind spsum
mark_as_command sphcat spsumsq
mark_as_rawcommand spinv spvcat
spatan2 spkron str2mat
spchol splchol unmark_command
spchol2inv split unmark_rawcommand
The following functions have been deprecated in Octave 3.4 and will
be removed from Octave 3.8 (or whatever version is the second major
release after 3.4):
autocor cellidx gammai is_global replot values
autocov dispatch glpkmex krylovb saveimage
betai fstat intwarning perror strerror
Summary of important user-visible changes for version 3.2:
---------------------------------------------------------
** Compatibility with Matlab graphics has been improved.
The hggroup object and associated listener callback functions have
been added allowing the inclusion of group objects. Data sources
have been added to these group objects such that
x = 0:0.1:10;
y = sin (x);
plot (x, y, "ydatasource", "y");
for i = 1 : 100
pause(0.1)
y = sin (x + 0.1 * i);
refreshdata ();
endfor
works as expected. This capability has be used to introduce
stem-series, bar-series, etc., objects for better Matlab
compatibility.
** New graphics functions:
addlistener ezcontour gcbo refresh
addproperty ezcontourf ginput refreshdata
allchild ezmesh gtext specular
available_graphics_toolkits ezmeshc intwarning surfl
graphics_toolkit ezplot ishghandle trisurf
cla ezplot3 isocolors waitforbuttonpress
clabel ezpolar isonormals
comet ezsurf isosurface
dellistener findall linkprop
diffuse gcbf plotmatrix
** New experimental OpenGL/FLTK based plotting system.
An experimental plotting system based on OpenGL and the FLTK
toolkit is now part of Octave. This graphics toolkit is disabled by
default. You can switch to using it with the command
graphics_toolkit ("fltk")
for all future figures or for a particular figure with the command
graphics_toolkit (h, "fltk")
where "h" is a valid figure handle.
** Functions providing direct access to gnuplot have been removed.
The functions __gnuplot_plot__, __gnuplot_set__, __gnuplot_raw__,
__gnuplot_show__, __gnuplot_replot__, __gnuplot_splot__,
__gnuplot_save_data__ and __gnuplot_send_inline_data__ have been
removed from Octave. These function were incompatible with the
high level graphics handle code.
** The Control, Finance and Quaternion functions have been removed.
These functions are now available as separate packages from
http://octave.sourceforge.net/packages.html
and can be reinstalled using the Octave package manager (see
the pkg function).
** Specific sparse matrix functions removed.
The following functions, which handled only sparse matrices have
been removed. Instead of calling these functions directly, you
should use the corresponding function without the "sp" prefix.
spatan2 spcumsum spkron spprod
spchol spdet splchol spqr
spchol2inv spdiag splu spsum
spcholinv spfind spmax spsumsqk
spcumprod spinv spmin
** Improvements to the debugger.
The interactive debugging features have been improved. Stopping
on statements with dbstop should work correctly now. Stepping
into and over functions, and stepping one statement at a time
(with dbstep) now works. Moving up and down the call stack with
dbup and dbdown now works. The dbstack function is now available
to print the current function call stack. The new dbquit function
is available to exit the debugging mode.
** Improved traceback error messages.
Traceback error messages are much more concise and easier to
understand. They now display information about the function call
stack instead of the stack of all statements that were active at
the point of the error.
** Object Oriented Programming.
Octave now includes OOP features and the user can create their own
class objects and overloaded functions and operators. For
example, all methods of a class called "myclass" will be found in
a directory "@myclass" on the users path. The class specific
versions of functions and operators take precedence over the
generic versions of these functions.
New functions related to OOP include
class inferiorto isobject loadobj methods superiorto
See the Octave manual for more details.
** Parsing of Command-style Functions.
Octave now parses command-style functions without needing to first
declare them with "mark_as_command". The rules for recognizing a
command-style function calls are
* A command must appear as the first word in a statement,
followed by a space.
* The first character after the space must not be '=' or '('
* The next token after the space must not look like a binary
operator.
These rules should be mostly compatible with the way Matlab parses
command-style function calls and allow users to define commands in
.m files without having to mark them as commands.
Note that previous versions of Octave allowed expressions like
x = load -text foo.dat
but an expression like this will now generate a parse error. In
order to assign the value returned by a function to a variable,
you must use the normal function call syntax:
x = load ("-text", "foo.dat");
** Block comments.
Commented code can be between matching "#{" and "#}" or "%{" and
"%}" markers, even if the commented code spans several line. This
allows blocks code to be commented, without needing to comment
each line. For example,
function [s, t] = func (x, y)
s = 2 * x;
#{
s *= y;
t = y + x;
#}
endfunction
the lines "s *= y;" and "t = y + x" will not be executed.
** If any subfunction in a file ends with "end" or "endfunction", then
they all must end that way. Previously, Octave accepted
function main ()
...
# no endfunction here.
function sub ()
...
endfunction
but this is no longer allowed.
** Special treatment in the parser of expressions like "a' * b".
In these cases the transpose is no longer explicitly formed and
BLAS libraries are called with the transpose flagged,
significantly improving performance for these kinds of
operations.
** Single Precision data type.
Octave now includes a single precision data type. Single
precision variables can be created with the "single" command, or
from functions like ones, eye, etc. For example,
single (1)
ones (2, 2, "single")
zeros (2, 2, "single")
eye (2, 2, "single")
Inf (2, 2, "single")
NaN (2, 2, "single")
NA (2, 2, "single")
all create single precision variables. For compatibility with
Matlab, mixed double/single precision operators and functions
return single precision types.
As a consequence of this addition to Octave the internal
representation of the double precision NA value has changed, and
so users that make use of data generated by Octave with R or
visa-versa are warned that compatibility might not be assured.
** Improved array indexing.
The underlying code used for indexing of arrays has been
completely rewritten and indexing is now significantly faster.
** Improved memory management.
Octave will now attempt to share data in some cases where previously
a copy would be made, such as certain array slicing operations or
conversions between cells, structs and cs-lists. This usually reduces
both time and memory consumption.
Also, Octave will now attempt to detect and optimize usage of a vector
as a stack, when elements are being repeatedly inserted at/removed from
the end of the vector.
** Improved performance for reduction operations.
The performance of the sum, prod, sumsq, cumsum, cumprod, any, all,
max and min functions has been significantly improved.
** Sorting and searching.
The performance of sort has been improved, especially when sorting
indices are requested. An efficient built-in issorted
implementation was added. The sortrows function now uses a more
efficient algorithm, especially in the homogeneous case. The lookup
function is now a built-in function performing a binary search,
optimized for long runs of close elements. Lookup also works with
cell arrays of strings.
** Range arithmetics
For some operations on ranges, Octave will attempt to keep the
result as a range. These include negation, adding a scalar,
subtracting a scalar, and multiplying by a scalar. Ranges with zero
increment are allowed and can be constructed using the built-in
function `ones'.
** Various performance improvements.
Performance of a number of other built-in operations and functions
was improved, including:
* logical operations
* comparison operators
* element-wise power
* accumarray
* cellfun
* isnan
* isinf
* isfinite
* nchoosek
* repmat
* strcmp
** 64-bit integer arithmetic.
Arithmetic with 64-bit integers (int64 and uint64 types) is fully
supported, with saturation semantics like the other integer types.
Performance of most integer arithmetic operations has been
improved by using integer arithmetic directly. Previously, Octave
performed integer math with saturation semantics by converting the
operands to double precision, performing the operation, and then
converting the result back to an integer value, truncating if
necessary.
** Diagonal and permutation matrices.
The interpreter can now treat diagonal and permutation matrices as
special objects that store only the non-zero elements, rather than
general full matrices. Therefore, it is now possible to construct
and use these matrices in linear algebra without suffering a
performance penalty due to storing large numbers of zero elements.
** Improvements to fsolve.
The fsolve function now accepts an option structure argument (see
also the optimset function). The INFO values returned from fsolve
have changed to be compatible with Matlab's fsolve function.
Additionally, fsolve is now able to solve overdetermined systems,
complex-differentiable complex systems, systems with a sparse
jacobian and can work in single precision if given single precision
inputs. It can also be called recursively.
** Improvements to the norm function.
The norm function is now able to compute row or column norms of a
matrix in a single call, as well as general matrix p-norms.
** New functions for computing some eigenvalues or singular values.
The eigs and svds functions have been included in Octave. These
functions require the ARPACK library (now distributed under a
GPL-compatible license).
** New QR and Cholesky factorization updating functions.
choldelete cholshift qrdelete qrshift
cholinsert cholupdate qrinsert qrupdate
** New quadrature functions.
dblquad quadgk quadv triplequad
** New functions for reading and writing images.
The imwrite and imread functions have been included in Octave.
These functions require the GraphicsMagick library. The new
function imfinfo provides information about an image file (size,
type, colors, etc.)
** The input_event_hook function has been replaced by the pair of
functions add_input_event_hook and remove_input_event_hook so that
more than one hook function may be installed at a time.
** Other miscellaneous new functions.
addtodate hypot reallog
bicgstab idivide realpow
cellslices info realsqrt
cgs interp1q rectint
command_line_path isdebugmode regexptranslate
contrast isfloat restoredefaultpath
convn isstrprop roundb
cummin log1p rundemos
cummax lsqnonneg runlength
datetick matlabroot saveobj
display namelengthmax spaugment
expm1 nargoutchk strchr
filemarker pathdef strvcat
fstat perl subspace
full prctile symvar
fzero quantile treelayout
genvarname re_read_readline_init_file validatestring
histc
** Changes to strcat.
The strcat function is now compatible with Matlab's strcat
function, which removes trailing whitespace when concatenating
character strings. For example
strcat ('foo ', 'bar')
==> 'foobar'
The new function cstrcat provides the previous behavior of
Octave's strcat.
** Improvements to the help functions.
The help system has been mostly re-implemented in .m files to make
it easier to modify. Performance of the lookfor function has been
greatly improved by caching the help text from all functions that
are distributed with Octave. The pkg function has been modified
to generate cache files for external packages when they are
installed.
** Deprecated functions.
The following functions were deprecated in Octave 3.0 and will be
removed from Octave 3.4 (or whatever version is the second major
release after 3.0):
beta_cdf geometric_pdf pascal_pdf
beta_inv geometric_rnd pascal_rnd
beta_pdf hypergeometric_cdf poisson_cdf
beta_rnd hypergeometric_inv poisson_inv
binomial_cdf hypergeometric_pdf poisson_pdf
binomial_inv hypergeometric_rnd poisson_rnd
binomial_pdf intersection polyinteg
binomial_rnd is_bool setstr
chisquare_cdf is_complex struct_contains
chisquare_inv is_list struct_elements
chisquare_pdf is_matrix t_cdf
chisquare_rnd is_scalar t_inv
clearplot is_square t_pdf
clg is_stream t_rnd
com2str is_struct uniform_cdf
exponential_cdf is_symmetric uniform_inv
exponential_inv is_vector uniform_pdf
exponential_pdf isstr uniform_rnd
exponential_rnd lognormal_cdf weibcdf
f_cdf lognormal_inv weibinv
f_inv lognormal_pdf weibpdf
f_pdf lognormal_rnd weibrnd
f_rnd meshdom weibull_cdf
gamma_cdf normal_cdf weibull_inv
gamma_inv normal_inv weibull_pdf
gamma_pdf normal_pdf weibull_rnd
gamma_rnd normal_rnd wiener_rnd
geometric_cdf pascal_cdf
geometric_inv pascal_inv
The following functions are now deprecated in Octave 3.2 and will
be removed from Octave 3.6 (or whatever version is the second major
release after 3.2):
create_set spcholinv spmax
dmult spcumprod spmin
iscommand spcumsum spprod
israwcommand spdet spqr
lchol spdiag spsum
loadimage spfind spsumsq
mark_as_command spinv str2mat
mark_as_rawcommand spkron unmark_command
spatan2 splchol unmark_rawcommand
spchol split
spchol2inv splu
See NEWS.3 for old news.
|