https://wiki.octave.org/wiki/api.php?action=feedcontributions&user=Carandraug&feedformat=atomOctave - User contributions [en]2022-05-25T07:23:49ZUser contributionsMediaWiki 1.35.5https://wiki.octave.org/wiki/index.php?title=OctConf_2019&diff=11708OctConf 20192019-02-07T19:11:39Z<p>Carandraug: octconf 2019 was never confirmed</p>
<hr />
<div>{{Warning|OctConf 2019 is not yet confirmed to happen}}<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2018]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2020]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2019]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Image_package&diff=11153Image package2018-09-01T01:50:50Z<p>Carandraug: remove roadmap that is not actually being followed</p>
<hr />
<div>The {{Forge|image|image package}} is part of the octave-forge project. See its {{Forge|image|homepage}} for the latest release.<br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
=== Missing functions ===<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* activecontour<br />
* adapthisteq<br />
* [https://savannah.gnu.org/patch/?8824 affine2d]<br />
* affine3d<br />
* applycform<br />
* axes2pix<br />
* bwconvhull<br />
* bwdistgeodesic<br />
* bwlookup<br />
* bwpack<br />
* bwtraceboundary<br />
* bwulterode<br />
* bwunpack<br />
* chromadapt<br />
* [https://savannah.gnu.org/patch/index.php?9608 colorangle]<br />
* colorcloud<br />
* convmtx2<br />
* corner<br />
* cornermetric<br />
* cpcorr<br />
* cpselect<br />
* cpstruct2pairs<br />
* dct2<br />
* dctmtx<br />
* deconvblind<br />
* deconvlucy<br />
* deconvreg<br />
* [https://savannah.gnu.org/patch/?9365 deconvwnr]<br />
* decorrstretch<br />
* [https://savannah.gnu.org/patch/?9593 demosaic]<br />
* dicomanon<br />
* dicomdisp<br />
* dicomuid<br />
* dpxinfo<br />
* dpxread<br />
* fan2para<br />
* fanbeam<br />
* fliptform<br />
* freqz2<br />
* fsamp2<br />
* ftrans2<br />
* fwind1<br />
* fwind2<br />
* gabor<br />
* getimage<br />
* getimagemodel<br />
* getline<br />
* getpts<br />
* getrect<br />
* gradientweight<br />
* grayconnected<br />
* graycoprops<br />
* graydiffweight<br />
* hdrread<br />
* hdrwrite<br />
* [https://savannah.gnu.org/patch/?9412 houghlines] -- (see hough_line)<br />
* [https://savannah.gnu.org/patch/?9407 houghpeaks]<br />
* iccfind<br />
* iccread<br />
* iccroot<br />
* iccwrite<br />
* idct2<br />
* ifanbeam<br />
* illumgray<br />
* illumpca<br />
* illumwhite<br />
* im2java2d<br />
* ImageAdapter<br />
* imageinfo<br />
* imapplymatrix<br />
* imapprox<br />
* imbinarize<br />
* imboxfilt<br />
* imboxfilt3<br />
* imcolormaptool<br />
* imcontour<br />
* imcontrast<br />
* imdisplayrange<br />
* imdistline<br />
* imellipse<br />
* imfreehand<br />
* imfuse<br />
* imgaborfilt<br />
* imgaussfilt<br />
* imgaussfilt3<br />
* imgca<br />
* imgcf<br />
* imguidedfilter<br />
* imhandles<br />
* imhistmatch<br />
* imline<br />
* immagbox<br />
* immovie<br />
* imoverview<br />
* imoverviewpanel<br />
* [https://savannah.gnu.org/patch/?8722 impixelinfo]<br />
* [https://savannah.gnu.org/patch/?8722 impixelinfoval]<br />
* impixelregion<br />
* impixelregionpanel<br />
* implay<br />
* impoint<br />
* impoly<br />
* improfile<br />
* imrect<br />
* imref2d<br />
* imref3d<br />
* imregconfig<br />
* imregcorr<br />
* imregdemons<br />
* imregister<br />
* imregtform<br />
* imroi<br />
* imscrollpanel<br />
* imsegfmm<br />
* imseggeodesic<br />
* imshowpair<br />
* imtool<br />
* imwarp<br />
* integralBoxFilter<br />
* integralBoxFilter3<br />
* [https://savannah.gnu.org/patch/?9606 integralImage]<br />
* integralImage3<br />
* interfileinfo<br />
* interfileread<br />
* iptaddcallback<br />
* iptcheckhandle<br />
* iptgetapi<br />
* iptGetPointerBehavior<br />
* iptgetpref<br />
* ipticondir<br />
* iptPointerManager<br />
* iptprefs<br />
* iptremovecallback<br />
* iptSetPointerBehavior<br />
* iptsetpref<br />
* iptwindowalign<br />
* isicc<br />
* isrset<br />
* [https://savannah.gnu.org/patch/?9600 lin2rgb]<br />
* makecform<br />
* makeConstrainToRectFcn<br />
* makehdr<br />
* makeresampler<br />
* [https://savannah.gnu.org/patch/?9602 multithresh]<br />
* nitfinfo<br />
* nitfread<br />
* openrset<br />
* [https://savannah.gnu.org/patch/?9360 otsuthresh]<br />
* para2fan<br />
* projective2d<br />
* regionfill<br />
* rgb2lin<br />
* roifill<br />
* roifilt2<br />
* [https://savannah.gnu.org/patch/?9509 roipoly]<br />
* rsetwrite<br />
* ssim<br />
* tformarray<br />
* tonemap<br />
* truesize<br />
* visboundaries<br />
* warp<br />
* [https://savannah.gnu.org/patch/?8060 whitepoint]<br />
* [https://savannah.gnu.org/patch/?9603 xyz2double]<br />
* [https://savannah.gnu.org/patch/?9603 xyz2uint16]<br />
</div><br />
<br />
=== Different functions ===<br />
<br />
* with version 2014a, Matlab introduced a new function imtranslate. This function was part of Octave's package since 2002 but Matlab version is completely different. It needs to be rewritten for Matlab compatibility.<br />
<br />
=== Missing options ===<br />
<br />
* @strel<br />
** missing SE decomposition for the diamond shape<br />
** approximation argument for the ball and disk shapes are not implemented<br />
** the translate method is not yet implemented<br />
* blockproc<br />
** The name-value input arguments have not yet been implemented.<br />
* colfilt<br />
** the option to split the image in smaller blocks before performing the im2col and filtering is ignored. Since that option only allows to use less memory and has no effect on the output is only important for sliding filtering with big blocks size.<br />
* impixel<br />
** interactive selection of points (less than 2 input arguments) is not yet implemented. Ability to create such UIs needs to be implemented in Octave core first.<br />
* imcrop<br />
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.<br />
* imwrap<br />
** no supports for SmoothEdges option<br />
* hough<br />
** no RhoResolution option<br />
<br />
=== Contributing ===<br />
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.<br />
<br />
=== Open Bugs ===<br />
<br />
{| class="wikitable" <br />
|-<br />
! bug !! bug title !! status<br />
|-<br />
| {{bug|38085}} || image package: fails to build with --enable-64 (entropyfilt) || Confirmed <br />
|-<br />
| {{bug|38087}}|| image package: graycomatrix incompatibilities with matlab || None<br />
|-<br />
| {{bug|38345}}|| image package: __spatial_filtering__() always returns class double || Confirmed<br />
|-<br />
| {{bug|41674}}|| image package: temporary arrays in imresize are doubles || None<br />
|-<br />
| {{bug|43218}}|| image package: imshear causes more signal spread than expected and inconsistent vertical offset || None<br />
|-<br />
| {{bug|44396}}|| image package: bwmorph shrink does not preserve Euler number || Confirmed<br />
|-<br />
| {{bug|44799}}|| image package: imrotate chrashes when using 'spline' as interpolation method || Confirmed<br />
|-<br />
| {{bug|44831}}|| image package: imrotate - different dimensions of output matrix || Confirmed<br />
|-<br />
| {{bug|45088}}|| image package: rangefilt requires domain and image to have equal number of dimensions || In Progress<br />
|-<br />
| {{bug|46745}}|| image package: imresize default method (bicubic) Matlab incompatible for the border pixels|| None<br />
|-<br />
| {{bug|48529}}|| image package: compilation warnings under Mac OSX|| None<br />
|-<br />
| {{bug|50071}}|| OF image: bwfill(...,4) in Octave behaves like bwfill(...,8) in MATLAB and vice versa|| None<br />
|-<br />
| {{bug|50151}}|| image package: normxcorr2 is not compatible with Matlab|| None<br />
|-<br />
| {{bug|50188}}|| image package: poly2mask does incompatible rounding|| None<br />
|-<br />
| {{bug|50257}}|| image package: imtranslate is not Matlab compatible|| Confirmed<br />
|-<br />
| {{bug|50341}}|| Missing Function imrect in image package|| None<br />
|-<br />
| {{bug|50429}}|| image package: xyz2lab changed slightly in Matlab (and other color conversion functions)|| None <br />
|-<br />
| {{bug|50656}}|| image package: bwerode does not return right size when there's more dimensions on conn || None<br />
|-<br />
| {{bug|50708}}|| image package: add demosaic.m|| Patch Submitted<br />
|-<br />
| {{bug|50732}} || Image package: infinite error loop when assigning a strel (class) object to a vector|| Confirmed<br />
|-<br />
| {{bug|50874}} || bwdist call causes application crash || Confirmed<br />
|-<br />
| {{bug|51420}} || [octave forge] (image) imrotate is less tolerant to missing argument than Matlab || None<br />
|-<br />
| {{bug|51719}} || [octave forge] (image) watershed unit test failure || None<br />
|-<br />
| {{bug|51769}} || [octave forge] (image) imresize bilinear interpolation inaccurate || Patch Submitted<br />
|-<br />
| {{bug|51884}} || [octave forge] (image) bwmorph(blackNwhiteMatrix, "thicken", 1) returns negated result (+ strange behavior at border) || None<br />
|-<br />
| {{bug|51979}} || [octave forge] (image) Failing unit test for impyramid || None<br />
|-<br />
| {{bug|51980}} || [octave forge] (image) Failing unit test for edge|| None<br />
|-<br />
| {{bug|51981}} || [octave forge] (image) Failing unit test for otf2psf|| None<br />
|-<br />
| {{bug|51982}} || [octave forge] (image) Failing unit test for nlfilter|| None<br />
|-<br />
| {{bug|52006}} || [octave forge] (image) 'makecform' feature request || Confirmed<br />
|-<br />
| {{bug|52119}} || [octave forge] (image) Add 'reflect' padding option to imfilter || None<br />
|-<br />
| {{bug|52715}} || [octave forge] (image) Add full data range option to ycbcrfunc conversions || None<br />
|-<br />
| {{bug|52933}} || [octave-forge] (image) regionprops Perimeter returns Matlab incompatible results || Patch Submitted<br />
|-<br />
| {{bug|52959}} || [octave-forge] (image) histeq is not compatible with Matlab || None<br />
|-<br />
| {{bug|53654}} || [octave-forge] (image) "rgb2gray.m shadows a core function" only under Windows, not under Linux || Works For Me<br />
|-<br />
|}<br />
<br />
=== Patches ===<br />
<br />
* {{patch|8059}}: [new function for image package] ranktf.m<br />
* {{patch|8060}}: [image package new function] whitepoint.m<br />
* {{patch|8722}}: implement impixelinfo and impixelinfoval<br />
* {{patch|8813}}: image package: Extended image I/O for Analyze 7.5 format to handle big-endian images<br />
* {{patch|8866}}: image package: add metainfo.xml file for Gnome Software<br />
* {{patch|8571}}: image package: three deconvolution routines (Wiener, RL, RLTV)<br />
* {{patch|8824}}: added affine2d class<br />
* {{patch|9235}}: image package: improve filtering functions (stdfilt, entropyfilt) and add tests (also medfilt2, ordfilt2, rangefilt)<br />
* {{patch|9244}}: image package: regionprops.m - new properties ConvexHull, ConvexImage, ConvexArea, Solidity<br />
* {{patch|9354}}: image package: new function wiener2.m<br />
* {{patch|9360}}: image package: new function otsuthresh.m<br />
* {{patch|9365}}: image package: new function deconvwnr.m<br />
* {{patch|9407}}: image package: new function houghpeaks.m<br />
* {{patch|9412}}: image package: new function houghlines.m<br />
* {{patch|9509}}: Image package: simple implementation of roipoly function<br />
* {{patch|9593}}: [Octave Forge] (Image) New function demosaic.m from bug #50708<br />
* {{patch|9600}}: [Octave Forge] (Image) New functions: lin2rgb.m and lrgb2lin.m<br />
* {{patch|9602}}: multithresh () for the image package<br />
* {{patch|9603}}: [Octave Forge] (Image) New functions: xyz2double.m, xyz2single.m, xyz2uint16.m<br />
* {{patch|9606}}: [Octave-forge] (image) New function integralImage<br />
* {{patch|9608}}: image package: new function colorangle<br />
<br />
== Image Processing Functions ==<br />
<br />
{{Note| This section is still under construction so the list is incomplete.}}<br />
<br />
This is a list of Image Processing functions by topic including: missing functions, related bugs and patches, and some alternatives.<br />
<br />
Note: <br />
<br />
=== Basic Read and Write Image Files ===<br />
<br />
{| class="wikitable" style="text-align: center"<br />
|-<br />
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives !! Notes<br />
|- <br />
| imfinfo || function is in Octave core || || ||<br />
|- <br />
| imread|| function is in Octave core || || [http://kyamagu.github.io/mexopencv/matlab/imread.html cv.imread] from [https://github.com/kyamagu/mexopencv mexopencv] || <br />
in case of color image, the color order of Octave is RGB/RGBA while OpenCV color order is BGR/BGRA<br />
|- <br />
| imwrite|| function is in Octave core || || [http://kyamagu.github.io/mexopencv/matlab/imread.html cv.imwrite] from [https://github.com/kyamagu/mexopencv mexopencv] ||<br />
in case of color image, the color order of Octave is RGB/RGBA while OpenCV color order is BGR/BGRA<br />
|-<br />
|}<br />
<br />
'''Missing:''' ''dicomanon, dicomdisp, dicomuid, dpxinfo, dpxread, interfileinfo, interfileread, nitfinfo, nitfread<br />
''<br />
<br />
=== High Dynamic Range Images - ''Not implemented'' ===<br />
<br />
=== Large Image Files - ''Not implemented'' ===<br />
<br />
=== Type Conversion ===<br />
<br />
{| class="wikitable" style="text-align: center"<br />
|-<br />
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes<br />
|- <br />
| adaptthresh || - || || [http://kyamagu.github.io/mexopencv/matlab/adaptiveThreshold.html cv.adaptiveThreshold] from [https://github.com/kyamagu/mexopencv mexopencv]|| <br />
|-<br />
| demosaic || - || {{bug|50708}} {{patch|9593}}|| [http://kyamagu.github.io/mexopencv/matlab/demosaicing.html cv.demosaicing] from [https://github.com/kyamagu/mexopencv mexopencv] ||<br />
|- <br />
| gray2ind || function is in Octave core || || ||<br />
|-<br />
| grayslice || < 1.0.0 || || ||<br />
|-<br />
| graythresh || 1.0.0 || || || Octave version has more methods<br />
|-<br />
| im2double || 1.0.0 || || ||<br />
|-<br />
| im2int16 || 2.0.0 || || ||<br />
|-<br />
| im2java2d || - || || ||<br />
|-<br />
| im2single || 2.0.0 || || || <br />
|-<br />
| im2uint16 || 1.0.0 || || || <br />
|-<br />
| im2uint8 || 1.0.0 || || || <br />
|-<br />
| imbinarize || - || || imbinarize (I) is equivalent to im2bw(I, graythresh(I)), <br />
another option is [http://kyamagu.github.io/mexopencv/matlab/threshold.html cv.threshold] from [https://github.com/kyamagu/mexopencv mexopencv] <br />
||<br />
|-<br />
| imcast || 2.4.0 || || || Octave Only<br />
|-<br />
| imquantize || 2.6.0 || || ||<br />
|-<br />
| ind2gray || function is in Octave core || || ||<br />
|-<br />
| ind2rgb || function is in Octave core || || ||<br />
|-<br />
| label2rgb || 1.0.0 || || ||<br />
|-<br />
| mat2gray || < 1.0.0 || || ||<br />
|-<br />
| multithresh || - || {{patch|9602}} || ||<br />
|-<br />
| otsuthresh || - || {{patch|9360}} || graythresh || otsuthresh(hist) is equivalent to graythresh (hist)<br />
|-<br />
| rgb2gray || function is in Octave core || {{bug|53654}} || || Octave version 4.4.0 and above<br />
|-<br />
| rgb2ind || function is in Octave core || || ||<br />
|-<br />
|}<br />
<br />
=== Color ===<br />
<br />
{| class="wikitable" style="text-align: center"<br />
|-<br />
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes<br />
|-<br />
| colorangle || - || {{patch|9608}} || || <br />
|-<br />
| lab2double || 2.6.0 || || || <br />
|-<br />
| lab2rgb || 2.6.0 || || || <br />
|-<br />
| lab2uint16 || 2.6.0 || || || <br />
|-<br />
| lab2uint8 || 2.6.0 || || || <br />
|-<br />
| lab2xyz || 2.6.0 || || || <br />
|-<br />
| lin2rgb || - || {{patch|9600}} || ||<br />
|-<br />
| ntsc2rgb || 2.8.0 || || || <br />
|-<br />
| rgb2lab || 2.6.0 || || || <br />
|-<br />
| rgb2lin || - || {{patch|9600}} || ||<br />
|-<br />
| rgb2ntsc || 2.8.0 || || || <br />
|-<br />
| rgb2xyz || 2.6.0 || || || <br />
|-<br />
| rgb2ycbcr || < 1.0.0|| || || <br />
|-<br />
| whitepoint || - || {{patch|8060}} || ||<br />
|-<br />
| xyz2double || - || {{patch|9603}} || ||<br />
|-<br />
| xyz2lab || 2.6.0 || || || <br />
|-<br />
| xyz2rgb || 2.6.0 || || || <br />
|-<br />
| xyz2uint16 || - || {{patch|9603}} || ||<br />
|-<br />
| ycbcr2rgb || 2.2.0|| || || <br />
|-<br />
|}<br />
<br />
'''Missing:''' ''applycform, chromadapt, colorcloud, iccfind, iccread, iccroot, iccwrite, illumgray, illumpca, illumwhite, imapprox, isicc, makecform''<br />
<br />
=== Synthetic Images ===<br />
<br />
{| class="wikitable" style="text-align: center"<br />
|-<br />
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes<br />
|- <br />
| checkerboard || dev || || ||<br />
|-<br />
| imnoise || 2.2.2 || || ||<br />
|-<br />
| phantom || 2.6.2 || || ||<br />
|-<br />
|}<br />
<br />
=== Basic Display ===<br />
<br />
{| class="wikitable" style="text-align: center"<br />
|-<br />
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes<br />
|- <br />
| imshow || function is in Octave core || || ||<br />
|-<br />
| montage || - || || ||<br />
|-<br />
|}<br />
<br />
'''Missing:''' ''imfuse, immovie, implay, imshowpair, iptgetpref, iptprefs, iptsetpref, warp''<br />
<br />
=== Image Filtering === <br />
<br />
{| class="wikitable" style="text-align: center"<br />
|-<br />
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes<br />
|- <br />
| bwareafilt|| 2.4.0 || || ||<br />
|-<br />
| bwpropfilt || 2.4.0 || || ||<br />
|-<br />
| convmtx2 || - || || ||<br />
|-<br />
| entropyfilt || 1.0.9 || {{patch|9235}} || ||<br />
|-<br />
| fibermetric ||- || || ||<br />
|-<br />
| freqz2 || -|| || ||<br />
|-<br />
| fsamp2 || - || || ||<br />
|-<br />
| fspecial || 1.0.0 || || ||<br />
|-<br />
| ftrans2 || - || || ||<br />
|-<br />
| fwind1 || - || || ||<br />
|-<br />
| fwind2 || - || || ||<br />
|-<br />
| gabor || - || || ||<br />
|- <br />
| imboxfilt || - || || ||<br />
|-<br />
| imboxfilt3 || - || || ||<br />
|-<br />
| imfilter || 1.0.5 || || || <br />
|- <br />
| imgaborfilt || - || || ||<br />
|-<br />
| imgaussfilt || - || || ||<br />
|-<br />
| imgaussfilt3 || - || || ||<br />
|-<br />
| imguidedfilter || - || || ||<br />
|-<br />
| imsmooth|| 1.0.5 || || || Octave only<br />
|-<br />
| integralBoxFilter || - || || ||<br />
|- <br />
| integralBoxFilter3 ||- || || ||<br />
|- <br />
| integralImage ||- || {{patch|9606}} || [http://kyamagu.github.io/mexopencv/matlab/integral.html cv.integral] from [https://github.com/kyamagu/mexopencv mexopencv] ||<br />
|- <br />
| integralImage3 || - || || ||<br />
|- <br />
| medfilt2 || < 1.0.0 || {{patch|9235}} || ||<br />
|- <br />
| medfilt3 || - || || ||<br />
|- <br />
| nlfilter || < 1.0.0 || || ||<br />
|- <br />
| normxcorr2 || 2.0.0 || {{bug|50151}} || ||<br />
|- <br />
| ordfilt2 || 1.0.9 || {{patch|9235}} || ||<br />
|- <br />
| padarray || < 1.0.0 || || ||<br />
|- <br />
| rangefilt || 1.0.9 || {{bug|45088}} {{patch|9235}} || ||<br />
|- <br />
| stdfilt || 1.0.9 || {{patch|9235}} || ||<br />
|- <br />
| wiener2 || 2.8.0|| || || <br />
|-<br />
|}<br />
<br />
=== Image Arithmetic === <br />
<br />
{| class="wikitable" style="text-align: center"<br />
|-<br />
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes<br />
|- <br />
| imabsdiff || 2.0.0 || || ||<br />
|- <br />
| imadd || 2.0.0 || || ||<br />
|- <br />
| imapplymatrix || - || || ||<br />
|- <br />
| imcomplement || 1.0.6 || || ||<br />
|- <br />
| imdivide || 2.0.0 || || ||<br />
|- <br />
| imlincomb || 2.0.0 || {{bug|50783}} || ||<br />
|- <br />
| immultiply || 2.0.0 || || ||<br />
|-<br />
| imsubtract || 2.0.0 || || ||<br />
|-<br />
|}<br />
<br />
=== Morphological Operations === <br />
<br />
{| class="wikitable" style="text-align: center"<br />
|-<br />
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes<br />
|- <br />
| applylut || < 1.0.0 || || ||<br />
|- <br />
| bwareaopen || 2.2.0 || || ||<br />
|- <br />
| bwhitmiss || < 1.0.0 || || ||<br />
|- <br />
| bwlookup || -- || || ||<br />
|-<br />
| bwmorph || < 1.0.0 || {{bug|51884}} || ||<br />
|- <br />
| bwulterode || -- || || ||<br />
|- <br />
| conndef || < 1.0.0 || || ||<br />
|- <br />
| imbothat || 2.0.0 || || ||<br />
|- <br />
| imclearborder || 2.4.0 || || ||<br />
|- <br />
| imclose || < 1.0.0 || || ||<br />
|- <br />
| imdilate || < 1.0.0 || || ||<br />
|- <br />
| imerode || < 1.0.0 || || ||<br />
|- <br />
| imextendedmax || 2.8.0 || || ||<br />
|- <br />
| imextendedmin || 2.8.0 || || ||<br />
|- <br />
| imfill || 2.6.0 || || ||<br />
|- <br />
| imhmax || 2.8.0 || || ||<br />
|- <br />
| imhmin || 2.8.0 || || ||<br />
|- <br />
| imimposemin || 2.8.0 || || ||<br />
|- <br />
| imopen || < 1.0.0 || || ||<br />
|- <br />
| imreconstruct || 2.4.0 || || ||<br />
|- <br />
| imregionalmax || 2.4.0 || || ||<br />
|- <br />
| imregionalmin || 2.4.0 || || ||<br />
|- <br />
| imtophat || < 1.0.0 || || ||<br />
|- <br />
| iptcheckconn || 2.0.0 || || ||<br />
|- <br />
| offsetstrel || -- || || ||<br />
|- <br />
| strel || 2.2.0 || {{bug|50732}} || ||<br />
|- <br />
| watershed || 2.6.0 || || ||<br />
|-<br />
|}<br />
<br />
=== Graphical Interface Interaction === <br />
<br />
{| class="wikitable" style="text-align: center"<br />
|-<br />
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes<br />
|-<br />
| imellipse || - || || ||<br />
|- <br />
| imfreehand || - || || ||<br />
|-<br />
| imline || - || || ||<br />
|-<br />
| immagbox || - || || ||<br />
|-<br />
| imoverview || - || || ||<br />
|-<br />
| imoverviewpanel || - || || ||<br />
|-<br />
| impixelinfo || - || {{patch|8722}} || ||<br />
|-<br />
| impixelinfoval || - || {{patch|8722}} || ||<br />
|-<br />
| impixelregion || - || || ||<br />
|-<br />
| impixelregionpanel || - || || ||<br />
|-<br />
| implay || - || || ||<br />
|-<br />
| impoint || - || || ||<br />
|-<br />
| impoly || - || || ||<br />
|-<br />
| imrect || - || || ||<br />
|-<br />
| imscrollpanel || - || || ||<br />
|-<br />
| iptgetpref || - || || ||<br />
|-<br />
| iptprefs || - || || ||<br />
|-<br />
| iptsetpref || - || || ||<br />
|-<br />
|}<br />
* Obs: implay, iptgetpref, iptprefs, iptsetpref functions are on Basic Display section too...<br />
<br />
[[Category:Octave-Forge]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=User:Carandraug&diff=11152User:Carandraug2018-09-01T01:50:35Z<p>Carandraug: add list of things I would like to see on the image package soon</p>
<hr />
<div>I got involved with Octave on the Winter of 2010, at the end of my first year as PhD student. My project involved using a Matlab piece of code written by a collaborator but I refused to use it, I wanted free software. So I convinced the collaborators to release it under GPL and ported it to Octave (released as [https://github.com/af-lab/frapinator frapinator], but I really should go back and write it properly).<br />
<br />
Since then, I have contributed to Octave many times, became maintainer of the Octave Forge project and its image package. While I have no formal education in programming or computer science, it was the freedom of Octave and its community that allowed me to learn so much.<br />
<br />
=== Roadmap ===<br />
<br />
The following are missing targets that would be nice to have on future releases of the image package<br />
<br />
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}}) ([http://hg.code.sf.net/p/octave/image/rev/7cf22a478792 done])<br />
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with labeled == labelid)<br />
* support passing {{codeline|bwconncomp}} output to {{codeline|regionprops}} (and then fix {{codeline|bwpropfilt}} to use that instead of a labeled image)<br />
* ND support on {{codeline|imfilter}}<br />
* check if {{codeline|normxcorr2}} is Matlab compatible and investigate making use of {{codeline|fftconvn}} since it's likely to receive large input<br />
* investigate implementing the missing deconvolution functions (see patch {{patch|8571}})<br />
* anything else that is done or submitted before the above are done</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Emacs&diff=11065Emacs2018-04-17T23:38:22Z<p>Carandraug: /* Using Octave Mode */ octave-mode is part of emacs since 21</p>
<hr />
<div>This is the default octave text editor.<br />
<br />
[http://omni.isr.ist.utl.pt/~etienne/EmacsEditingOctaveCode.jpg Emacs Editing Octave Code]<br />
<br />
= Emacs Octave Support =<br />
<br />
The development of Octave code can greatly be facilitated using Emacs<br />
with Octave mode, a major mode for editing Octave files which can, for<br />
example:<br />
<br />
* automatically indent the code<br />
* do some of the typing (with Abbrev mode)<br />
* highlight keywords, comments, strings, etc. in different faces (with Font-lock mode on devices that support it).<br />
<br />
It is also possible to run Octave from within Emacs, either by directly<br />
entering commands at the prompt in a buffer in Inferior Octave mode, or<br />
by interacting with Octave from within a file with Octave code. This is<br />
useful in particular for debugging Octave code.<br />
<br />
Finally, you can convince Octave to use the Emacs info reader for<br />
{{codeline|help -i}}.<br />
<br />
All functionality is provided by the Emacs Lisp package EOS (Emacs<br />
Octave Support).<br />
<br />
Please contact [mailto:Kurt.Hornik@wu-wien.ac.at Kurt Hornik] if you have<br />
any questions or suggestions on using EOS.<br />
<br />
== Installing EOS ==<br />
<br />
The Emacs package EOS consists of the three files {{Path|octave-mod.el}},<br />
{{Path|octave-inf.el}}, and {{Path|octave-hlp.el}}. These files,<br />
or better yet their byte-compiled versions, should be somewhere in your Emacs<br />
load-path.<br />
<br />
If you have GNU Emacs with a version number at least as high as 19.35,<br />
you are all set up, because EOS is respectively will be part of GNU<br />
Emacs as of version 19.35.<br />
<br />
Otherwise, copy the three files from the {{Path|emacs}} subdirectory of<br />
the Octave distribution to a place where Emacs can find them (this<br />
depends on how your Emacs was installed). Byte-compile them for speed<br />
if you want.<br />
<br />
== Using Octave Mode ==<br />
<br />
If you are lucky, your sysadmins have already arranged everything so<br />
that Emacs automatically goes into Octave mode whenever you visit an<br />
Octave code file as characterized by its extension {{Path|.m}}.<br />
If not, proceed as follows.<br />
<br />
<ol><br />
<li>To begin using Octave mode for all {{Path|.m}} files you visit, add the following lines to a file loaded by Emacs at startup time, typically your {{Path|~/.emacs}} file:</li><br />
<pre><br />
(setq auto-mode-alist<br />
(cons '("\\.m$" . octave-mode) auto-mode-alist))<br />
</pre><br />
<li>Finally, to turn on the abbrevs, auto-fill and font-lock features automatically, also add the following lines to one of the Emacs startup files:</li><br />
<pre><br />
(add-hook 'octave-mode-hook<br />
(lambda ()<br />
(abbrev-mode 1)<br />
(auto-fill-mode 1)<br />
(if (eq window-system 'x)<br />
(font-lock-mode 1))))<br />
</pre><br />
</ol><br />
See the Emacs manual for more information about how to customize<br />
Font-lock mode.<br />
<br />
In Octave mode, the following special Emacs commands can be used in<br />
addition to the standard Emacs commands.<br />
<br />
; {{key press|C-h|m}}<br />
: Describe the features of Octave mode.<br />
<br />
; {{key press|LFD}}<br />
: Reindent the current Octave line, insert a newline and indent the new line ({{codeline|octave-reindent-then-newline-and-indent}}). An abbrev before point is expanded if {{codeline|abbrev-mode}} is non-{{codeline|nil}}.<br />
<br />
; {{key press|TAB}}<br />
: Indents current Octave line based on its contents and on previous lines ({codeline|indent-according-to-mode}}).<br />
<br />
; {{key press|;}}<br />
: Insert an "electric" semicolon ({codeline|octave-electric-semi}}). If {{codeline|octave-auto-indent}} is non-{{codeline|nil}}, reindent the current line. If {{codeline|octave-auto-newline}} is non-{{codeline|nil}}, automagically insert a newline and indent the new line.<br />
<br />
; {{key press|`}}<br />
: Start entering an abbreviation ({{codeline|octave-abbrev-start}}). If Abbrev mode is turned on, typing {{key press|`C-h}} or {{key press|`?}} lists all abbrevs. Any other key combination is executed normally. Note that all Octave abbrevs start with a grave accent.<br />
<br />
; {{key press|M-LFD}}<br />
: Break line at point and insert continuation marker and alignment ({{codeline|octave-split-line}}).<br />
<br />
; {{key press|M-TAB}}<br />
: Perform completion on Octave symbol preceding point, comparing that symbol against Octave's reserved words and built-in variables ({{codeline|octave-complete-symbol}}).<br />
<br />
; {{key press|M-C-a}}<br />
: Move backward to the beginning of a function ({{codeline|octave-beginning-of-defun}}). With prefix argument {{codeline|N}}, do it that many times if {codeline|N}} is positive; otherwise, move forward to the {codeline|N}}-th following beginning of a function.<br />
<br />
; {{key press|M-C-e}}<br />
: Move forward to the end of a function ({{codeline|octave-end-of-defun}}). With prefix argument {{codeline|N}}, do it that many times if {{codeline|N}} is positive; otherwise, move back to the {{codeline|N}}-th preceding end of a function.<br />
<br />
; {{key press|M-C-h}}<br />
: Puts point at beginning and mark at the end of the current Octave function, i.e., the one containing point or following point ({{codeline|octave-mark-defun}}).<br />
<br />
; {{key press|M-C-q}}<br />
: Properly indents the Octave function which contains point ({{codeline|octave-indent-defun}}).<br />
<br />
; {{key press|M-;}}<br />
: If there is no comment already on this line, create a code-level comment (started by two comment characters) if the line is empty, or an in-line comment (started by one comment character) otherwise ({{codeline|octave-indent-for-comment}}). Point is left after the start of the comment which is properly aligned.<br />
<br />
; {{key press|C-c|;}}<br />
: Puts the comment character {{codeline|#}} (more precisely, the string value of {{codeline|octave-comment-start}}) at the beginning of every line in the region ({{codeline|octave-comment-region}}). With just {{key press|C-u}} prefix argument, uncomment each line in the region. A numeric prefix argument {{codeline|N}} means use {{codeline|N}} comment characters.<br />
<br />
; {{key press|C-c|:}}<br />
: Uncomments every line in the region ({{codeline|octave-uncomment-region}}).<br />
<br />
; {{key press|C-c|C-p}}<br />
: Move one line of Octave code backward, skipping empty and comment lines ({{codeline|octave-previous-code-line}}). With numeric prefix argument {{codeline|N}}, move that many code lines backward (forward if {{codeline|N}} is negative).<br />
<br />
; {{key press|C-c|C-n}}<br />
: Move one line of Octave code forward, skipping empty and comment lines ({{codeline|octave-next-code-line}}). With numeric prefix argument {{codeline|N}}, move that many code lines forward (backward if {{codeline|N}} is negative).<br />
<br />
; {{key press|C-c|C-a}}<br />
: Move to the `real' beginning of the current line<br />
({{codeline|octave-beginning-of-line}}). If point is in an empty or comment line, simply go to its beginning; otherwise, move backwards to the beginning of the first code line which is not inside a continuation statement, i.e., which does not follow a code line ending in {{codeline|...}} or {{codeline|\}}, or is inside an open parenthesis list.<br />
<br />
; {{key press|C-c|C-e}}<br />
: Move to the `real' end of the current line ({{codeline|octave-end-of-line}}). If point is in a code line, move forward to the end of the first Octave code line which does not end in {{codeline|...}} or {{codeline|\}} or is inside an open parenthesis list. Otherwise, simply go to the end of the current line.<br />
<br />
; {{key press|C-c|M-C-n}}<br />
: Move forward across one balanced begin-end block of Octave code ({{codeline|octave-forward-block}}). With numeric prefix argument {{codeline|N}}, move forward across {{codeline|n}} such blocks (backward if {{codeline|N}} is negative).<br />
<br />
; {{key press|C-c|M-C-p}}<br />
: Move back across one balanced begin-end block of Octave code ({{codeline|octave-backward-block}}). With numeric prefix argument {{codeline|N}}, move backward across {{codeline|N}} such blocks (forward if {{codeline|N}} is negative).<br />
<br />
; {{key press|C-c|M-C-d}}<br />
: Move forward down one begin-end block level of Octave code ({{codeline|octave-down-block}}). With numeric prefix argument, do it that many times; a negative argument means move backward, but still go down one level.<br />
<br />
; {{key press|C-c|M-C-u}}<br />
: Move backward out of one begin-end block level of Octave code ({{codeline|octave-backward-up-block}}). With numeric prefix argument, do it that many times; a negative argument means move forward, but still to a less deep spot.<br />
<br />
; {{key press|C-c|M-C-h}}<br />
: Put point at the beginning of this block, mark at the end ({{codeline|octave-mark-block}}). The block marked is the one that contains point or follows point.<br />
<br />
; {{key press|C-c|]}}<br />
: Close the current block on a separate line ({{codeline|octave-close-block}}). An error is signaled if no block to close is found.<br />
<br />
; {{key press|C-c|f}}<br />
: Insert a function skeleton, prompting for the function's name, arguments and return values which have to be entered without parentheses ({{codeline|octave-insert-defun}}).<br />
<br />
; {{key press|C-c|C-h}}<br />
: Search the function, operator and variable indices of all info files with documentation for Octave for entries ({{codeline|octave-help}}). If used interactively, the entry is prompted for with completion. If multiple matches are found, one can cycle through them using the standard {{codeline|,}} ({{codeline|Info-index-next}}) command of the Info reader.<br />
:<br />
: The variable {{codeline|octave-help-files}} is a list of files to search through and defaults to {{codeline|'("octave")}}. If there is also an Octave Local Guide with corresponding info file, say, {{Path|octave-LG}}, you can have {{codeline|octave-help}} search both files by {{codeline|(setq octave-help-files '("octave" "octave-LG"))}} in one of your Emacs startup files.<br />
<br />
A common problem is that the {{key press|RET}} key does ''not'' indent the<br />
line to where the new text should go after inserting the newline. This<br />
is because the standard Emacs convention is that {{key press|RET}} (aka<br />
{{key press|C-m}}) just adds a newline, whereas {{key press|LFD}} (aka {{key press|C-j}}) adds a<br />
newline and indents it. This is particularly inconvenient for users with<br />
keyboards which do not have a special {{key press|LFD}} key at all; in such<br />
cases, it is typically more convenient to use {{key press|RET}} as the {{key press|LFD}}<br />
key (rather than typing {{key press|C-j}}).<br />
<br />
You can make {{key press|RET}} do this by adding<br />
<br />
<pre><br />
(define-key octave-mode-map "\C-m"<br />
'octave-reindent-then-newline-and-indent)<br />
</pre><br />
<br />
to one of your Emacs startup files. Another, more generally applicable<br />
solution is<br />
<br />
<pre><br />
(defun RET-behaves-as-LFD ()<br />
(let ((x (key-binding "\C-j")))<br />
(local-set-key "\C-m" x)))<br />
(add-hook 'octave-mode-hook 'RET-behaves-as-LFD)<br />
</pre><br />
<br />
(this works for all modes by adding to the startup hooks, without having<br />
to know the particular binding of {{key press|RET}} in that mode!). Similar<br />
considerations apply for using {{key press|M-RET}} as {{key press|M-LFD}}. As<br />
[mailto:bwarsaw@cnri.reston.va.us Barry A. Warsaw] says in the documentation for his<br />
{{codeline|cc-mode}}, "This is a very common question. :-) If you want<br />
this to be the default behavior, don't lobby me, lobby RMS!"<br />
<br />
The following variables can be used to customize Octave mode.<br />
<br />
; {{codeline|octave-auto-indent}}<br />
: Non-{{codeline|nil}} means auto-indent the current line after a semicolon or space. Default is {{codeline|nil}}.<br />
<br />
; {{codeline|octave-auto-newline}}<br />
: Non-{{codeline|nil}} means auto-insert a newline and indent after semicolons are typed. The default value is {{codeline|nil}}.<br />
<br />
; {{codeline|octave-blink-matching-block}}<br />
: Non-{{codeline|nil}} means show matching begin of block when inserting a space, newline or {{codeline|;}} after an else or end keyword. Default is {{codeline|t}}. This is an extremely useful feature for automatically verifying that the keywords match --- if they don't, an error message is displayed.<br />
<br />
; {{codeline|octave-block-offset}}<br />
: Extra indentation applied to statements in block structures. Default is 2.<br />
<br />
; {{codeline|octave-continuation-offset}}<br />
: Extra indentation applied to Octave continuation lines. Default is 4.<br />
<br />
; {{codeline|octave-continuation-string}}<br />
: String used for Octave continuation lines. Normally {{codeline|\}}.<br />
<br />
; {{codeline|octave-mode-startup-message}}<br />
: If {{codeline|t}} (default), a startup message is displayed when Octave mode is called.<br />
<br />
If Font Lock mode is enabled, Octave mode will display<br />
<br />
* strings in {{codeline|font-lock-string-face}}<br />
<br />
* comments in {{codeline|font-lock-comment-face}}<br />
<br />
* the Octave reserved words (such as all block keywords) and the text functions (such as {{codeline|cd}} or {{codeline|who}}) which are also reserved using {{codeline|font-lock-keyword-face}}<br />
<br />
* the built-in operators ({{codeline|&&}}, {{codeline|<nowiki>==</nowiki>}}, {{codeline|...}}) using {{codeline|font-lock-reference-face}}<br />
<br />
* and the function names in function declarations in {{codeline|font-lock-function-name-face}}.<br />
<br />
There is also rudimentary support for Imenu (currently, function<br />
names can be indexed).<br />
<br />
You can generate {{Path|TAGS}} files for Emacs from Octave {{Path|.m}} files using<br />
the shell script {{codeline|octave-tags}} that is installed alongside your copy of<br />
Octave.<br />
<br />
Customization of Octave mode can be performed by modification of the<br />
variable {{codeline|octave-mode-hook}}. If the value of this variable is<br />
non-{{codeline|nil}}, turning on Octave mode calls its value.<br />
<br />
If you discover a problem with Octave mode, you can conveniently send a<br />
bug report using {{key press|C-c|C-b}} ({{codeline|octave-submit-bug-report}}). This<br />
automatically sets up a mail buffer with version information already<br />
added. You just need to add a description of the problem, including a<br />
reproducible test case and send the message.<br />
<br />
== Running Octave from Within Emacs ==<br />
<br />
The package octave provides commands for running an inferior<br />
Octave process in a special Emacs buffer. Use<br />
{{key press|M-x}} {{codeline|run-octave}}<br />
to directly start an inferior Octave process. If Emacs does not know<br />
about this command, add the line<br />
{{codeline|(autoload 'run-octave "octave-inf" nil t)}}<br />
to your {{Path|.emacs}} file.<br />
<br />
This will start Octave in a special buffer the name of which is<br />
specified by the variable {{codeline|inferior-octave-buffer}} and defaults to<br />
"*Inferior Octave*". From within this buffer, you can<br />
interact with the inferior Octave process as usual, i.e., by entering<br />
Octave commands at the prompt. The buffer is in Inferior Octave mode,<br />
which is derived from the standard Comint mode, a major mode for<br />
interacting with an inferior interpreter. See the documentation for<br />
{{codeline|comint-mode}} for more details, and use {{key press|C-h|b}} to find out<br />
about available special keybindings.<br />
<br />
You can also communicate with an inferior Octave process from within<br />
files with Octave code (i.e., buffers in Octave mode), using the<br />
following commands.<br />
<br />
; {{key press|C-c|i|l}}<br />
: Send the current line to the inferior Octave process ({{codeline|octave-send-line}}). With positive prefix argument {{codeline|N}}, send that many lines. If {{codeline|octave-send-line-auto-forward}} is non-{{codeline|nil}}, go to the next unsent code line.<br />
<br />
; {{key press|C-c|i|b}}<br />
: Send the current block to the inferior Octave process ({{codeline|octave-send-block}}).<br />
<br />
; {{key press|C-c|i|f}}<br />
: Send the current function to the inferior Octave process ({{codeline|octave-send-defun}}).<br />
<br />
; {{key press|C-c|i|r}}<br />
: Send the region to the inferior Octave process ({{codeline|octave-send-region}}).<br />
<br />
; {{key press|C-c|i|s}}<br />
: Make sure that `inferior-octave-buffer' is displayed ({{codeline|octave-show-process-buffer}}).<br />
<br />
; {{key press|C-c|i|h}}<br />
: Delete all windows that display the inferior Octave buffer ({{codeline|octave-hide-process-buffer}}).<br />
<br />
; {{key press|C-c|i|k}}<br />
: Kill the inferior Octave process and its buffer ({{codeline|octave-kill-process}}).<br />
<br />
The effect of the commands which send code to the Octave process can be<br />
customized by the following variables.<br />
<br />
; {{codeline|octave-send-echo-input}}<br />
: Non-{{codeline|nil}} means echo input sent to the inferior Octave process. Default is {{codeline|t}}.<br />
<br />
; {{codeline|octave-send-show-buffer}}<br />
Non-{{codeline|nil}} means display the buffer running the Octave process after sending a command (but without selecting it). Default is {{codeline|t}}.<br />
<br />
If you send code and there is no inferior Octave process yet, it will be<br />
started automatically.<br />
<br />
The startup of the inferior Octave process is highly customizable.<br />
The variable {{codeline|inferior-octave-startup-args}} can be used for<br />
specifying command lines arguments to be passed to Octave on startup<br />
as a list of strings. For example, to suppress the startup message and<br />
use traditional mode, set this to {{codeline|'("-q" "--traditional")}}.<br />
You can also specify a startup file of Octave commands to be loaded on<br />
startup; note that these commands will not produce any visible output<br />
in the process buffer. Which file to use is controlled by the variable<br />
{{codeline|inferior-octave-startup-file}}. If this is {{codeline|nil}}, the file<br />
{{Path|~/.emacs-octave}} is used if it exists.<br />
<br />
And finally, {{codeline|inferior-octave-mode-hook}} is run after starting the<br />
process and putting its buffer into Inferior Octave mode. Hence, if you<br />
like the up and down arrow keys to behave in the interaction buffer as<br />
in the shell, and you want this buffer to use nice colors, add<br />
<br />
<pre><br />
(add-hook 'inferior-octave-mode-hook<br />
(lambda ()<br />
(turn-on-font-lock)<br />
(define-key inferior-octave-mode-map [up]<br />
'comint-previous-input)<br />
(define-key inferior-octave-mode-map [down]<br />
'comint-next-input)))<br />
</pre><br />
<br />
to your {{Path|.emacs}} file. You could also swap the roles of {{key press|C-a}}<br />
({{codeline|beginning-of-line}}) and {{key press|C-c|C-a}} ({{codeline|comint-bol}}) using<br />
this hook.<br />
<br />
Note that if you set your Octave prompts to something different<br />
from the defaults, make sure that {{codeline|inferior-octave-prompt}} matches<br />
them. Otherwise, ''nothing'' will work, because Emacs will not know<br />
when Octave is waiting for input, or done sending output.<br />
<br />
== Using the Emacs Info Reader for Octave ==<br />
<br />
You may also use the Emacs Info reader with Octave's {{codeline|doc}} function.<br />
For this, the package gnuserv needs to be installed.<br />
<br />
If gnuserv is installed, add the lines<br />
<br />
<pre><br />
(autoload 'octave-help "octave-hlp" nil t)<br />
(require 'gnuserv)<br />
(gnuserv-start)<br />
</pre><br />
<br />
to your {{Path|.emacs}} file.<br />
<br />
You can use either plain Emacs Info or the function {{codeline|octave-help}}<br />
as your Octave info reader (for {{codeline|help -i}}). In the former case,<br />
use {{codeline|info_program ("info-emacs-info")}}.<br />
The latter is perhaps more attractive because it allows one to look up keys<br />
in the indices of several info files related to Octave (provided<br />
that the Emacs variable {{codeline|octave-help-files}} is set correctly). In<br />
this case, use {{codeline|info_program ("info-emacs-octave-help")}}.<br />
<br />
If you use Octave from within Emacs, it is best to add these settings to<br />
your {{Path|~/.emacs-octave}} startup file (or the file pointed to by the<br />
Emacs variable {{codeline|inferior-octave-startup-file}}).<br />
<br />
[[Category:Editors]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Statistics_package&diff=10771Statistics package2018-03-15T16:19:40Z<p>Carandraug: /* Core package */ decide for anderson_darling_test and princomp</p>
<hr />
<div>The {{Forge|statistics|statistics package}} is part of the octave-forge project.<br />
<br />
== Core package ==<br />
<br />
We need to decide what to do with the functions in the existing forge package when:<br />
<br />
=== To be decided ===<br />
<br />
{| class="wikitable"<br />
! function<br />
! decision/notes<br />
|-<br />
|anderson_darling_cdf<br />
|<br />
|-<br />
|cl_multinom<br />
|<br />
|-<br />
|dcov<br />
|<br />
|-<br />
| gevfit_lmom<br />
|<br />
|-<br />
| iwishpdf<br />
|<br />
|-<br />
| jsucdf<br />
|<br />
|-<br />
|jsupdf<br />
|<br />
|-<br />
|monotone_smooth<br />
|<br />
|-<br />
|normalise_distribution<br />
|<br />
|-<br />
|princomp<br />
|matlab says that the function has been removed but likely is a lie. We should keep it too.<br />
|-<br />
|qrandn<br />
|<br />
|-<br />
|runstest<br />
|<br />
|-<br />
|sigma_pts<br />
|not yet released<br />
|-<br />
|violin<br />
|<br />
|-<br />
|vmpdf<br />
|<br />
|-<br />
|vmrnd<br />
|<br />
|-<br />
|wishpdf<br />
|<br />
|}<br />
<br />
=== Matlab incompatible ===<br />
<br />
This functions have the same name as Matlab functions but have a different interface<br />
<br />
* boxplot<br />
* gpcdf<br />
* gpinv<br />
* gppdf<br />
* gprnd<br />
<br />
=== Can be reused in other functions ===<br />
<br />
{| class="wikitable"<br />
!forge function<br />
!matlab counterpart<br />
|-<br />
|anderson_darling_test<br />
|adtest<br />
|-<br />
|bbscdf<br />
|BirnbaumSaundersDistribution class<br />
|-<br />
|bbsinv<br />
|BirnbaumSaundersDistribution class<br />
|-<br />
|bbspdf<br />
|BirnbaumSaundersDistribution class<br />
|-<br />
|bbsrnd<br />
|BirnbaumSaundersDistribution class<br />
|-<br />
|binotest<br />
|binofit<br />
|-<br />
|burrcdf<br />
|BurrDistribution class<br />
|-<br />
|burrinv<br />
|BurrDistribution class<br />
|-<br />
|burrpdf<br />
|BurrDistribution class<br />
|-<br />
|burrrnd<br />
|BurrDistribution class<br />
|-<br />
|nakacdf<br />
|NakagamiDistribution class<br />
|-<br />
|nakainv<br />
|NakagamiDistribution class<br />
|-<br />
|nakapdf<br />
|NakagamiDistribution class<br />
|-<br />
|nakarnd - should be used to implement the<br />
|NakagamiDistribution class<br />
|-<br />
|regress_gp<br />
|RegressionGP class<br />
|-<br />
|repanova<br />
|RepeatedMeasuresModel.ranova<br />
|-<br />
|tricdf<br />
|TriangularDistribution class<br />
|-<br />
|triinv<br />
|TriangularDistribution class<br />
|-<br />
|tripdf<br />
|TriangularDistribution class<br />
|-<br />
|trirnd<br />
|TriangularDistribution class<br />
|-<br />
|logistic_cdf<br />
|LogisticDistribution class<br />
|-<br />
|logistic_inv<br />
|LogisticDistribution class<br />
|-<br />
|logistic_pdf<br />
|LogisticDistribution class<br />
|-<br />
|logistic_rnd<br />
|LogisticDistribution class<br />
|-<br />
|stdnormal_cdf<br />
|NormalDistribution class<br />
|-<br />
|stdnormal_inv<br />
|NormalDistribution class<br />
|-<br />
|stdnormal_pdf<br />
|NormalDistribution class<br />
|-<br />
|stdnormal_rnd<br />
|NormalDistribution class<br />
|-<br />
|anova<br />
|anova method in different *Model classes<br />
|-<br />
|manova<br />
|manova methods in different *Model classes<br />
|-<br />
|bartlett_test<br />
|barttest<br />
|-<br />
|kolmogorov_smirnov_test<br />
|ktest<br />
|-<br />
|kolmogorov_smirnov_test_2<br />
|ktest2<br />
|-<br />
|kruskal_wallis_test<br />
|kruskalwallis<br />
|}<br />
<br />
=== Ready to go ===<br />
<br />
This functions seems to be matlab compatible<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* anovan<br />
* betastat<br />
* binostat<br />
* binotest<br />
* canoncorr<br />
* caseread<br />
* casewrite<br />
* cdf<br />
* chi2stat<br />
* cmdscale<br />
* combnk<br />
* copulacdf<br />
* copulapdf<br />
* copularnd<br />
* crossval<br />
* @cvpartition<br />
* dendrogram<br />
* expstat<br />
* ff2n<br />
* fitgmdist<br />
* fstat<br />
* fullfact<br />
* gamfit<br />
* gamlike<br />
* gamstat<br />
* geomean<br />
* geostat<br />
* gevcdf<br />
* gevfit<br />
* gevinv<br />
* gevlike<br />
* gevpdf<br />
* gevrnd<br />
* gevstat<br />
* gmdistribution<br />
* grp2idx<br />
* harmmean<br />
* hist3<br />
* histfit<br />
* hmmestimate<br />
* hmmgenerate<br />
* hmmviterbi<br />
* hygestat<br />
* iwishrnd<br />
* jackknife<br />
* kmeans<br />
* linkage<br />
* lognstat<br />
* mad<br />
* mahal<br />
* mnpdf<br />
* mnrnd<br />
* mvncdf<br />
* mvnpdf<br />
* mvnrnd<br />
* mvtcdf<br />
* mvtpdf<br />
* mvtrnd<br />
* nanmax<br />
* nanmean<br />
* nanmedian<br />
* nanmin<br />
* nanstd<br />
* nansum<br />
* nanvar<br />
* nbinstat<br />
* normplot<br />
* normstat<br />
* pcacov<br />
* pcares<br />
* pdf<br />
* pdist2<br />
* pdist<br />
* plsregress<br />
* poisstat<br />
* random<br />
* randsample<br />
* raylcdf<br />
* raylinv<br />
* raylpdf<br />
* raylrnd<br />
* raylstat<br />
* regress<br />
* signtest<br />
* squareform<br />
* stepwisefit<br />
* tabulate<br />
* tblread<br />
* tblwrite<br />
* trimmean<br />
* tstat<br />
* ttest2<br />
* ttest<br />
* unidstat<br />
* unifstat<br />
* vartest2<br />
* vartest<br />
* wblstat<br />
* wishrnd<br />
* ztest<br />
* prctile<br />
* qqplot<br />
* betacdf<br />
* betainv<br />
* betapdf<br />
* betarnd<br />
* binocdf<br />
* binoinv<br />
* binopdf<br />
* binornd<br />
* chi2cdf<br />
* chi2inv<br />
* chi2pdf<br />
* chi2rnd<br />
* expcdf<br />
* expinv<br />
* exppdf<br />
* exprnd<br />
* fcdf<br />
* finv<br />
* fpdf<br />
* frnd<br />
* gamcdf<br />
* gaminv<br />
* gampdf<br />
* gamrnd<br />
* geocdf<br />
* geoinv<br />
* geopdf<br />
* geornd<br />
* hygecdf<br />
* hygeinv<br />
* hygepdf<br />
* hygernd<br />
* logncdf<br />
* logninv<br />
* lognpdf<br />
* lognrnd<br />
* nbincdf<br />
* nbininv<br />
* nbinpdf<br />
* nbinrnd<br />
* normcdf<br />
* norminv<br />
* normpdf<br />
* normrnd<br />
* poisscdf<br />
* poissinv<br />
* poisspdf<br />
* poissrnd<br />
* tcdf<br />
* tinv<br />
* tpdf<br />
* trnd<br />
* unidcdf<br />
* unidinv<br />
* unidpdf<br />
* unidrnd<br />
* unifcdf<br />
* unifinv<br />
* unifpdf<br />
* unifrnd<br />
* wblcdf<br />
* wblinv<br />
* wblpdf<br />
* wblrnd<br />
</div><br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the statistics package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/statistics/ development sources] before adding it.}}<br />
<br />
=== Missing functions ===<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* ClassificationBaggedEnsemble<br />
* ClassificationDiscriminant<br />
* ClassificationDiscriminant.fit<br />
* ClassificationEnsemble<br />
* ClassificationKNN<br />
* ClassificationKNN.fit<br />
* ClassificationPartitionedEnsemble<br />
* ClassificationPartitionedModel<br />
* ClassificationTree<br />
* ClassificationTree.fit<br />
* CompactClassificationDiscriminant<br />
* CompactClassificationEnsemble<br />
* CompactClassificationTree<br />
* CompactRegressionEnsemble<br />
* CompactRegressionTree<br />
* CompactTreeBagger<br />
* ExhaustiveSearcher<br />
* GeneralizedLinearModel<br />
* GeneralizedLinearModel.fit<br />
* GeneralizedLinearModel.stepwise<br />
* KDTreeSearcher<br />
* LinearMixedModel<br />
* LinearMixedModel.fit<br />
* LinearMixedModel.fitmatrix<br />
* LinearModel<br />
* LinearModel.fit<br />
* LinearModel.stepwise<br />
* NaiveBayes<br />
* NaiveBayes.fit<br />
* NonLinearModel<br />
* NonLinearModel.fit<br />
* ProbDistUnivKernel<br />
* ProbDistUnivParam<br />
* RegressionBaggedEnsemble<br />
* RegressionEnsemble<br />
* RegressionPartitionedEnsemble<br />
* RegressionPartitionedModel<br />
* RegressionTree<br />
* RegressionTree.fit<br />
* TreeBagger<br />
* addTerms<br />
* addedvarplot<br />
* addlevels<br />
* adtest<br />
* andrewsplot<br />
* anova1<br />
* anova2<br />
* ansaribradley<br />
* aoctool<br />
* barttest<br />
* bbdesign<br />
* betafit<br />
* betalike<br />
* binofit<br />
* biplot<br />
* bootci<br />
* bootstrp<br />
* candexch<br />
* candgen<br />
* capability<br />
* capaplot<br />
* ccdesign<br />
* cdfplot<br />
* cell2dataset<br />
* chi2gof<br />
* cholcov<br />
* classify<br />
* classregtree<br />
* cluster<br />
* clusterdata<br />
* clustering.evaluation.CalinskiHarabaszEvaluation<br />
* clustering.evaluation.DaviesBouldinEvaluation<br />
* clustering.evaluation.GapEvaluation<br />
* clustering.evaluation.SilhouetteEvaluation<br />
* coefCI<br />
* coefTest<br />
* compact<br />
* compare<br />
* confusionmat<br />
* controlchart<br />
* controlrules<br />
* cophenet<br />
* copulafit<br />
* copulaparam<br />
* copulastat<br />
* cordexch<br />
* corrcov<br />
* covarianceParameters<br />
* coxphfit<br />
* createns<br />
* crosstab<br />
* datasample<br />
* dataset<br />
* dataset2cell<br />
* dataset2struct<br />
* dataset2table<br />
* datasetfun<br />
* daugment<br />
* dcovary<br />
* designMatrix<br />
* devianceTest<br />
* dfittool<br />
* disttool<br />
* droplevels<br />
* dummyvar<br />
* dwtest<br />
* ecdf<br />
* ecdfhist<br />
* evalclusters<br />
* evcdf<br />
* evfit<br />
* evinv<br />
* evlike<br />
* evpdf<br />
* evrnd<br />
* evstat<br />
* explike<br />
* export<br />
* factoran<br />
* fitdist<br />
* fitensemble<br />
* fitglm<br />
* fitlm<br />
* fitlme<br />
* fitlmematrix<br />
* fitnlm<br />
* fitted<br />
* fixedEffects<br />
* fracfact<br />
* fracfactgen<br />
* friedman<br />
* fsurfht<br />
* gagerr<br />
* getlabels<br />
* getlevels<br />
* gline<br />
* glmfit<br />
* glmval<br />
* glyphplot<br />
* gname<br />
* gpcdf<br />
* gpfit<br />
* gpinv<br />
* gplike<br />
* gplotmatrix<br />
* gppdf<br />
* gprnd<br />
* gpstat<br />
* grpstats<br />
* gscatter<br />
* haltonset<br />
* hmmdecode<br />
* hmmtrain<br />
* hougen<br />
* icdf<br />
* inconsistent<br />
* interactionplot<br />
* invpred<br />
* islevel<br />
* ismissing<br />
* isundefined<br />
* jbtest<br />
* johnsrnd<br />
* join<br />
* knnsearch<br />
* kruskalwallis<br />
* ksdensity<br />
* kstest<br />
* kstest2<br />
* labels<br />
* lasso<br />
* lassoPlot<br />
* lassoglm<br />
* levelcounts<br />
* leverage<br />
* lhsdesign<br />
* lhsnorm<br />
* lillietest<br />
* linhyptest<br />
* lognfit<br />
* lognlike<br />
* lsline<br />
* mahal<br />
* maineffectsplot<br />
* makedist<br />
* manova1<br />
* manovacluster<br />
* mat2dataset<br />
* mdscale<br />
* mergelevels<br />
* mhsample<br />
* mle<br />
* mlecov<br />
* mnrfit<br />
* mnrval<br />
* multcompare<br />
* multivarichart<br />
* mvregress<br />
* mvregresslike<br />
* nancov<br />
* nbinfit<br />
* ncfcdf<br />
* ncfinv<br />
* ncfpdf<br />
* ncfrnd<br />
* ncfstat<br />
* nctcdf<br />
* nctinv<br />
* nctpdf<br />
* nctrnd<br />
* nctstat<br />
* ncx2cdf<br />
* ncx2inv<br />
* ncx2pdf<br />
* ncx2rnd<br />
* ncx2stat<br />
* negloglik<br />
* nlinfit<br />
* nlintool<br />
* nlmefit<br />
* nlmefitsa<br />
* nlparci<br />
* nlpredci<br />
* nnmf<br />
* nominal<br />
* normfit<br />
* normlike<br />
* normspec<br />
* optimalleaforder<br />
* ordinal<br />
* parallelcoords<br />
* paramci<br />
* paretotails<br />
* partialcorr<br />
* partialcorri<br />
* pca<br />
* pdf<br />
* pearsrnd<br />
* perfcurve<br />
* plotAdded<br />
* plotAdjustedResponse<br />
* plotDiagnostics<br />
* plotEffects<br />
* plotInteraction<br />
* plotResiduals<br />
* plotSlice<br />
* poissfit<br />
* polytool<br />
* ppca<br />
* predict<br />
* prob.BetaDistribution<br />
* prob.BinomialDistribution<br />
* prob.BirnbaumSaundersDistribution<br />
* prob.BurrDistribution<br />
* prob.ExponentialDistribution<br />
* prob.ExtremeValueDistribution<br />
* prob.GammaDistribution<br />
* prob.GeneralizedExtremeValueDistribution<br />
* prob.GeneralizedParetoDistribution<br />
* prob.InverseGaussianDistribution<br />
* prob.KernelDistribution<br />
* prob.LogisticDistribution<br />
* prob.LoglogisticDistribution<br />
* prob.LognormalDistribution<br />
* prob.MultinomialDistribution<br />
* prob.NakagamiDistribution<br />
* prob.NegativeBinomialDistribution<br />
* prob.NormalDistribution<br />
* prob.PiecewiseLinearDistribution<br />
* prob.PoissonDistribution<br />
* prob.RayleighDistribution<br />
* prob.RicianDistribution<br />
* prob.TriangularDistribution<br />
* prob.UniformDistribution<br />
* prob.WeibullDistribution<br />
* prob.tLocationScaleDistribution<br />
* probplot<br />
* procrustes<br />
* proflik<br />
* qrandset<br />
* qrandstream<br />
* randomEffects<br />
* randtool<br />
* rangesearch<br />
* ranksum<br />
* raylfit<br />
* rcoplot<br />
* refcurve<br />
* refline<br />
* regstats<br />
* relieff<br />
* removeTerms<br />
* residuals<br />
* response<br />
* ridge<br />
* robustdemo<br />
* robustfit<br />
* rotatefactors<br />
* rowexch<br />
* rsmdemo<br />
* rstool<br />
* sampsizepwr<br />
* scatterhist<br />
* sequentialfs<br />
* setlabels<br />
* signrank<br />
* silhouette<br />
* slicesample<br />
* sobolset<br />
* statget<br />
* statset<br />
* step<br />
* stepwise<br />
* stepwiseglm<br />
* stepwiselm<br />
* struct2dataset<br />
* surfht<br />
* svmclassify<br />
* svmtrain<br />
* table2dataset<br />
* tabulate<br />
* tdfread<br />
* tiedrank<br />
* truncate<br />
* unifit<br />
* vartestn<br />
* wblfit<br />
* wbllike<br />
* wblplot<br />
* x2fx<br />
* xptread<br />
</div><br />
<br />
=== Missing options ===<br />
<br />
[[Category:Octave-Forge]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Statistics_package&diff=10769Statistics package2018-03-15T15:07:19Z<p>Carandraug: add functions in package to move to core</p>
<hr />
<div>The {{Forge|statistics|statistics package}} is part of the octave-forge project.<br />
<br />
== Core package ==<br />
<br />
We need to decide what to do with the functions in the existing forge package when:<br />
<br />
=== To be decided ===<br />
<br />
{| class="wikitable"<br />
! function<br />
! decision/notes<br />
|-<br />
|anderson_darling_cdf<br />
|<br />
|-<br />
|anderson_darling_test<br />
|<br />
|-<br />
|cl_multinom<br />
|<br />
|-<br />
|dcov<br />
|<br />
|-<br />
| gevfit_lmom<br />
|<br />
|-<br />
| iwishpdf<br />
|<br />
|-<br />
| jsucdf<br />
|<br />
|-<br />
|jsupdf<br />
|<br />
|-<br />
|monotone_smooth<br />
|<br />
|-<br />
|normalise_distribution<br />
|<br />
|-<br />
|princomp<br />
|matlab says that the function has been removed but likely is a lie<br />
|-<br />
|qrandn<br />
|<br />
|-<br />
|runstest<br />
|<br />
|-<br />
|sigma_pts<br />
|not yet released<br />
|-<br />
|violin<br />
|<br />
|-<br />
|vmpdf<br />
|<br />
|-<br />
|vmrnd<br />
|<br />
|-<br />
|wishpdf<br />
|<br />
|}<br />
<br />
=== Matlab incompatible ===<br />
<br />
This functions have the same name as Matlab functions but have a different interface<br />
<br />
* boxplot<br />
* gpcdf<br />
* gpinv<br />
* gppdf<br />
* gprnd<br />
<br />
=== Can be reused in other functions ===<br />
<br />
{| class="wikitable"<br />
!forge function<br />
!matlab counterpart<br />
|-<br />
|bbscdf<br />
|BirnbaumSaundersDistribution class<br />
|-<br />
|bbsinv<br />
|BirnbaumSaundersDistribution class<br />
|-<br />
|bbspdf<br />
|BirnbaumSaundersDistribution class<br />
|-<br />
|bbsrnd<br />
|BirnbaumSaundersDistribution class<br />
|-<br />
|binotest<br />
|binofit<br />
|-<br />
|burrcdf<br />
|BurrDistribution class<br />
|-<br />
|burrinv<br />
|BurrDistribution class<br />
|-<br />
|burrpdf<br />
|BurrDistribution class<br />
|-<br />
|burrrnd<br />
|BurrDistribution class<br />
|-<br />
|nakacdf<br />
|NakagamiDistribution class<br />
|-<br />
|nakainv<br />
|NakagamiDistribution class<br />
|-<br />
|nakapdf<br />
|NakagamiDistribution class<br />
|-<br />
|nakarnd - should be used to implement the<br />
|NakagamiDistribution class<br />
|-<br />
|regress_gp<br />
|RegressionGP class<br />
|-<br />
|repanova<br />
|RepeatedMeasuresModel.ranova<br />
|-<br />
|tricdf<br />
|TriangularDistribution class<br />
|-<br />
|triinv<br />
|TriangularDistribution class<br />
|-<br />
|tripdf<br />
|TriangularDistribution class<br />
|-<br />
|trirnd<br />
|TriangularDistribution class<br />
|-<br />
|logistic_cdf<br />
|LogisticDistribution class<br />
|-<br />
|logistic_inv<br />
|LogisticDistribution class<br />
|-<br />
|logistic_pdf<br />
|LogisticDistribution class<br />
|-<br />
|logistic_rnd<br />
|LogisticDistribution class<br />
|-<br />
|stdnormal_cdf<br />
|NormalDistribution class<br />
|-<br />
|stdnormal_inv<br />
|NormalDistribution class<br />
|-<br />
|stdnormal_pdf<br />
|NormalDistribution class<br />
|-<br />
|stdnormal_rnd<br />
|NormalDistribution class<br />
|-<br />
|anova<br />
|anova method in different *Model classes<br />
|-<br />
|manova<br />
|manova methods in different *Model classes<br />
|-<br />
|bartlett_test<br />
|barttest<br />
|-<br />
|kolmogorov_smirnov_test<br />
|ktest<br />
|-<br />
|kolmogorov_smirnov_test_2<br />
|ktest2<br />
|-<br />
|kruskal_wallis_test<br />
|kruskalwallis<br />
|}<br />
<br />
=== Ready to go ===<br />
<br />
This functions seems to be matlab compatible<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* anovan<br />
* betastat<br />
* binostat<br />
* binotest<br />
* canoncorr<br />
* caseread<br />
* casewrite<br />
* cdf<br />
* chi2stat<br />
* cmdscale<br />
* combnk<br />
* copulacdf<br />
* copulapdf<br />
* copularnd<br />
* crossval<br />
* @cvpartition<br />
* dendrogram<br />
* expstat<br />
* ff2n<br />
* fitgmdist<br />
* fstat<br />
* fullfact<br />
* gamfit<br />
* gamlike<br />
* gamstat<br />
* geomean<br />
* geostat<br />
* gevcdf<br />
* gevfit<br />
* gevinv<br />
* gevlike<br />
* gevpdf<br />
* gevrnd<br />
* gevstat<br />
* gmdistribution<br />
* grp2idx<br />
* harmmean<br />
* hist3<br />
* histfit<br />
* hmmestimate<br />
* hmmgenerate<br />
* hmmviterbi<br />
* hygestat<br />
* iwishrnd<br />
* jackknife<br />
* kmeans<br />
* linkage<br />
* lognstat<br />
* mad<br />
* mahal<br />
* mnpdf<br />
* mnrnd<br />
* mvncdf<br />
* mvnpdf<br />
* mvnrnd<br />
* mvtcdf<br />
* mvtpdf<br />
* mvtrnd<br />
* nanmax<br />
* nanmean<br />
* nanmedian<br />
* nanmin<br />
* nanstd<br />
* nansum<br />
* nanvar<br />
* nbinstat<br />
* normplot<br />
* normstat<br />
* pcacov<br />
* pcares<br />
* pdf<br />
* pdist2<br />
* pdist<br />
* plsregress<br />
* poisstat<br />
* random<br />
* randsample<br />
* raylcdf<br />
* raylinv<br />
* raylpdf<br />
* raylrnd<br />
* raylstat<br />
* regress<br />
* signtest<br />
* squareform<br />
* stepwisefit<br />
* tabulate<br />
* tblread<br />
* tblwrite<br />
* trimmean<br />
* tstat<br />
* ttest2<br />
* ttest<br />
* unidstat<br />
* unifstat<br />
* vartest2<br />
* vartest<br />
* wblstat<br />
* wishrnd<br />
* ztest<br />
* prctile<br />
* qqplot<br />
* betacdf<br />
* betainv<br />
* betapdf<br />
* betarnd<br />
* binocdf<br />
* binoinv<br />
* binopdf<br />
* binornd<br />
* chi2cdf<br />
* chi2inv<br />
* chi2pdf<br />
* chi2rnd<br />
* expcdf<br />
* expinv<br />
* exppdf<br />
* exprnd<br />
* fcdf<br />
* finv<br />
* fpdf<br />
* frnd<br />
* gamcdf<br />
* gaminv<br />
* gampdf<br />
* gamrnd<br />
* geocdf<br />
* geoinv<br />
* geopdf<br />
* geornd<br />
* hygecdf<br />
* hygeinv<br />
* hygepdf<br />
* hygernd<br />
* logncdf<br />
* logninv<br />
* lognpdf<br />
* lognrnd<br />
* nbincdf<br />
* nbininv<br />
* nbinpdf<br />
* nbinrnd<br />
* normcdf<br />
* norminv<br />
* normpdf<br />
* normrnd<br />
* poisscdf<br />
* poissinv<br />
* poisspdf<br />
* poissrnd<br />
* tcdf<br />
* tinv<br />
* tpdf<br />
* trnd<br />
* unidcdf<br />
* unidinv<br />
* unidpdf<br />
* unidrnd<br />
* unifcdf<br />
* unifinv<br />
* unifpdf<br />
* unifrnd<br />
* wblcdf<br />
* wblinv<br />
* wblpdf<br />
* wblrnd<br />
</div><br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the statistics package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/statistics/ development sources] before adding it.}}<br />
<br />
=== Missing functions ===<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* ClassificationBaggedEnsemble<br />
* ClassificationDiscriminant<br />
* ClassificationDiscriminant.fit<br />
* ClassificationEnsemble<br />
* ClassificationKNN<br />
* ClassificationKNN.fit<br />
* ClassificationPartitionedEnsemble<br />
* ClassificationPartitionedModel<br />
* ClassificationTree<br />
* ClassificationTree.fit<br />
* CompactClassificationDiscriminant<br />
* CompactClassificationEnsemble<br />
* CompactClassificationTree<br />
* CompactRegressionEnsemble<br />
* CompactRegressionTree<br />
* CompactTreeBagger<br />
* ExhaustiveSearcher<br />
* GeneralizedLinearModel<br />
* GeneralizedLinearModel.fit<br />
* GeneralizedLinearModel.stepwise<br />
* KDTreeSearcher<br />
* LinearMixedModel<br />
* LinearMixedModel.fit<br />
* LinearMixedModel.fitmatrix<br />
* LinearModel<br />
* LinearModel.fit<br />
* LinearModel.stepwise<br />
* NaiveBayes<br />
* NaiveBayes.fit<br />
* NonLinearModel<br />
* NonLinearModel.fit<br />
* ProbDistUnivKernel<br />
* ProbDistUnivParam<br />
* RegressionBaggedEnsemble<br />
* RegressionEnsemble<br />
* RegressionPartitionedEnsemble<br />
* RegressionPartitionedModel<br />
* RegressionTree<br />
* RegressionTree.fit<br />
* TreeBagger<br />
* addTerms<br />
* addedvarplot<br />
* addlevels<br />
* adtest<br />
* andrewsplot<br />
* anova1<br />
* anova2<br />
* ansaribradley<br />
* aoctool<br />
* barttest<br />
* bbdesign<br />
* betafit<br />
* betalike<br />
* binofit<br />
* biplot<br />
* bootci<br />
* bootstrp<br />
* candexch<br />
* candgen<br />
* capability<br />
* capaplot<br />
* ccdesign<br />
* cdfplot<br />
* cell2dataset<br />
* chi2gof<br />
* cholcov<br />
* classify<br />
* classregtree<br />
* cluster<br />
* clusterdata<br />
* clustering.evaluation.CalinskiHarabaszEvaluation<br />
* clustering.evaluation.DaviesBouldinEvaluation<br />
* clustering.evaluation.GapEvaluation<br />
* clustering.evaluation.SilhouetteEvaluation<br />
* coefCI<br />
* coefTest<br />
* compact<br />
* compare<br />
* confusionmat<br />
* controlchart<br />
* controlrules<br />
* cophenet<br />
* copulafit<br />
* copulaparam<br />
* copulastat<br />
* cordexch<br />
* corrcov<br />
* covarianceParameters<br />
* coxphfit<br />
* createns<br />
* crosstab<br />
* datasample<br />
* dataset<br />
* dataset2cell<br />
* dataset2struct<br />
* dataset2table<br />
* datasetfun<br />
* daugment<br />
* dcovary<br />
* designMatrix<br />
* devianceTest<br />
* dfittool<br />
* disttool<br />
* droplevels<br />
* dummyvar<br />
* dwtest<br />
* ecdf<br />
* ecdfhist<br />
* evalclusters<br />
* evcdf<br />
* evfit<br />
* evinv<br />
* evlike<br />
* evpdf<br />
* evrnd<br />
* evstat<br />
* explike<br />
* export<br />
* factoran<br />
* fitdist<br />
* fitensemble<br />
* fitglm<br />
* fitlm<br />
* fitlme<br />
* fitlmematrix<br />
* fitnlm<br />
* fitted<br />
* fixedEffects<br />
* fracfact<br />
* fracfactgen<br />
* friedman<br />
* fsurfht<br />
* gagerr<br />
* getlabels<br />
* getlevels<br />
* gline<br />
* glmfit<br />
* glmval<br />
* glyphplot<br />
* gname<br />
* gpcdf<br />
* gpfit<br />
* gpinv<br />
* gplike<br />
* gplotmatrix<br />
* gppdf<br />
* gprnd<br />
* gpstat<br />
* grpstats<br />
* gscatter<br />
* haltonset<br />
* hmmdecode<br />
* hmmtrain<br />
* hougen<br />
* icdf<br />
* inconsistent<br />
* interactionplot<br />
* invpred<br />
* islevel<br />
* ismissing<br />
* isundefined<br />
* jbtest<br />
* johnsrnd<br />
* join<br />
* knnsearch<br />
* kruskalwallis<br />
* ksdensity<br />
* kstest<br />
* kstest2<br />
* labels<br />
* lasso<br />
* lassoPlot<br />
* lassoglm<br />
* levelcounts<br />
* leverage<br />
* lhsdesign<br />
* lhsnorm<br />
* lillietest<br />
* linhyptest<br />
* lognfit<br />
* lognlike<br />
* lsline<br />
* mahal<br />
* maineffectsplot<br />
* makedist<br />
* manova1<br />
* manovacluster<br />
* mat2dataset<br />
* mdscale<br />
* mergelevels<br />
* mhsample<br />
* mle<br />
* mlecov<br />
* mnrfit<br />
* mnrval<br />
* multcompare<br />
* multivarichart<br />
* mvregress<br />
* mvregresslike<br />
* nancov<br />
* nbinfit<br />
* ncfcdf<br />
* ncfinv<br />
* ncfpdf<br />
* ncfrnd<br />
* ncfstat<br />
* nctcdf<br />
* nctinv<br />
* nctpdf<br />
* nctrnd<br />
* nctstat<br />
* ncx2cdf<br />
* ncx2inv<br />
* ncx2pdf<br />
* ncx2rnd<br />
* ncx2stat<br />
* negloglik<br />
* nlinfit<br />
* nlintool<br />
* nlmefit<br />
* nlmefitsa<br />
* nlparci<br />
* nlpredci<br />
* nnmf<br />
* nominal<br />
* normfit<br />
* normlike<br />
* normspec<br />
* optimalleaforder<br />
* ordinal<br />
* parallelcoords<br />
* paramci<br />
* paretotails<br />
* partialcorr<br />
* partialcorri<br />
* pca<br />
* pdf<br />
* pearsrnd<br />
* perfcurve<br />
* plotAdded<br />
* plotAdjustedResponse<br />
* plotDiagnostics<br />
* plotEffects<br />
* plotInteraction<br />
* plotResiduals<br />
* plotSlice<br />
* poissfit<br />
* polytool<br />
* ppca<br />
* predict<br />
* prob.BetaDistribution<br />
* prob.BinomialDistribution<br />
* prob.BirnbaumSaundersDistribution<br />
* prob.BurrDistribution<br />
* prob.ExponentialDistribution<br />
* prob.ExtremeValueDistribution<br />
* prob.GammaDistribution<br />
* prob.GeneralizedExtremeValueDistribution<br />
* prob.GeneralizedParetoDistribution<br />
* prob.InverseGaussianDistribution<br />
* prob.KernelDistribution<br />
* prob.LogisticDistribution<br />
* prob.LoglogisticDistribution<br />
* prob.LognormalDistribution<br />
* prob.MultinomialDistribution<br />
* prob.NakagamiDistribution<br />
* prob.NegativeBinomialDistribution<br />
* prob.NormalDistribution<br />
* prob.PiecewiseLinearDistribution<br />
* prob.PoissonDistribution<br />
* prob.RayleighDistribution<br />
* prob.RicianDistribution<br />
* prob.TriangularDistribution<br />
* prob.UniformDistribution<br />
* prob.WeibullDistribution<br />
* prob.tLocationScaleDistribution<br />
* probplot<br />
* procrustes<br />
* proflik<br />
* qrandset<br />
* qrandstream<br />
* randomEffects<br />
* randtool<br />
* rangesearch<br />
* ranksum<br />
* raylfit<br />
* rcoplot<br />
* refcurve<br />
* refline<br />
* regstats<br />
* relieff<br />
* removeTerms<br />
* residuals<br />
* response<br />
* ridge<br />
* robustdemo<br />
* robustfit<br />
* rotatefactors<br />
* rowexch<br />
* rsmdemo<br />
* rstool<br />
* sampsizepwr<br />
* scatterhist<br />
* sequentialfs<br />
* setlabels<br />
* signrank<br />
* silhouette<br />
* slicesample<br />
* sobolset<br />
* statget<br />
* statset<br />
* step<br />
* stepwise<br />
* stepwiseglm<br />
* stepwiselm<br />
* struct2dataset<br />
* surfht<br />
* svmclassify<br />
* svmtrain<br />
* table2dataset<br />
* tabulate<br />
* tdfread<br />
* tiedrank<br />
* truncate<br />
* unifit<br />
* vartestn<br />
* wblfit<br />
* wbllike<br />
* wblplot<br />
* x2fx<br />
* xptread<br />
</div><br />
<br />
=== Missing options ===<br />
<br />
[[Category:Octave-Forge]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10763OctConf 2018 Notes2018-03-15T12:33:55Z<p>Carandraug: /* Thursday */</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
: we have questioned the value of this. Most students don't stay after GSoC and most projects do not get merged into core and the packages. Even if it costs us no money, it costs us a lot of time since most students need a lot of hand holding, and it's the whole community that is actually mentoring. Ignoring the students is also not nice to them. Nir is the person responsible and he's not attending this year so we are not deciding anything. However, we need to ensure that students know much, and do a better job at filtering out clueless students.<br />
<br />
; refactoring (threading) / developer docs / symbol naming / liboctave interface stability and usability<br />
: These are all very related issues. We have some issues threading and those are mainly because we don't know how to do things properly. Some of us have learned how since but we don't have that knowledge shared and so it's a bit of lack of documentation for ourselves. We decided that changes to Octave internals, the C++ stuff, will need to include doxygen docs for the things that it changes. We have notes on how to write doxygen docs on our [[C++ style guide#Doxygen|C++ style guide]].<br />
: We also have builds of doxygen docs online, including development version http://octave.org/doxygen/ but they are not up to date. jwe will set his build bots to update the doxygen docs daily.<br />
: We also discussed making available builds of the default branch for users. This would be nice because we get users reporting bugs earlier. However, we are afraid that people will not understand that the latest version is a work in progress, not the latest usable version. So we decided against making such builds available.<br />
<br />
; test coverage<br />
: We can already get the line coverage of our test suite if we run make coverage but that only includes the C++ code. jwe says that it would be simple to add some fields to the interpreter that would allow us to also get the line coverage. This would only be done if Octave was built with specific flags. Oliver pointed out that because of vectorized options, line coverage in m file is not as useful as in other languages since the conditions that in other languages is done with if blocks, are instead done by using indexing with an empty array of an array of false elements.<br />
<br />
; measurements of performance<br />
: the test suite is not the best measure of performance. We are estimating that most of its time is spent on running assert which is irrelevant for real Octave programs. It is also mainly cover corner cases and a lot of tests are if it fails when input checking is correct. We should instead have real Octave programs that we used for benchmarking. There wasn't much discussion of this topic beyond noting the problem exists.<br />
<br />
; Octave Forge community<br />
:Currently, there is a high barrier to publish new packages for Octave on Octave-Forge. This mainly comes from the maintenance burden that the Octave Forge Community has with the packages. In particular:<br />
:* The package has to be actively maintained in order to stay compatible with updates to Octave core<br />
:* There is no known good solution to have a Matlab-compatible package, which respects the requirements of an OF package<br />
:* The list of initial requirements (legal and technical) is quite high for outside contributers, especially for domain experts (which we want to address) who are no software engineers<br />
: This creates problems for some external package authors, who basically want to release on their own. Also, this is not resolved by the *two package groups* that we have introduced during the last year.<br />
:<br />
: We see potential for more Octave package publications, which come from “one-off” publications (e. g. with a book / thesis), existing Matlab packages (which also offer a Octave variant), and simple (experimental) libraries of m-files. To increase the pool of high-level users we need to reduce even more the burden to install and distribute packages independently.<br />
:<br />
: The problem that we see today is that Octave-Forge is two-fold: (1) a (collaborative) software development platform and (2) a (re-)distributor of software. So, these new use-cases would not be part of Octave-Forge. In the context of an increasing number of independent “Github developers” this is not needed so much.<br />
:<br />
: To do this we bring back the idea of allowing `pkg` to download and install directly from a url to a `.zip` file or `.tar.gz` file, e.g. `pkg install 'https://myrepo.org/mypackage.zip'`<br />
:* There will be no checks (nor quality standard) on these packages and the user should be clearly warned:<br />
:** Security issue: With no https the download can be redirected. The user can be tricked into entering this command, which downloads and installs (=runs) arbitrary software.<br />
:** Feedback/QA issue: If that package doesn't work, users are probably asking for help.<br />
:* Should `pkg update` also work for these packages?<br />
:** Maybe no. Just re-run the install command.<br />
:** If needed, there could be an update url in the DESCRIPTION file<br />
:* We need to provide guidelines, recommendations and tools for people trying to distribute their packages. We are doing something in this direction, but we need a little boost here: https://octave.sourceforge.io/templates/Makefile, https://sourceforge.net/p/octave/example-package/ci/default/tree/<br />
:* If a package can be installed directly from the repository, it would be supported out-of-the-box by Github, Gitlab, …<br />
:<br />
:Also, we discussed a “package database” like it is done in Julia (see [https://github.com/JuliaLang/METADATA.jl] for a very lightweight solution, which only contains package names, URLs and version), but don't see advantages from that right now.<br />
<br />
; packages into Octave core<br />
: Decided that Octave releases will include some core packages. These will be developed along Octave core, in the same repository, and will be released at the same time. For all purposes they will be a single software project. However, they will still need to be loaded like any other packages.<br />
: Initially, these packages will cover signal processing, statistics, image processing, optimisation, communications, and control. Their aim is to be compatible with their Matlab counterparts and they will be partly imported from the existing Octave Forge packages.<br />
: We won't import all packages in one go. We will start with statistics because we have recently moved a bunch of core functions into it and so they will be easier to import back. signal will probably follow but Pantxo pointed out that this would require a lot of work on its documentation. optim and communications will probably go last since communications is abandoned and optim does not actually have many Matlab compatible functions.<br />
: The current forge packages include extra functions that are not in the Matlab counterparts and their inclusion in the core packages will be decided on a case by case basis. Not sure what will happen with them most likely they would go into a separate package like statistics-legacy.<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked remotely on merging Cristiano Dorigo's improvement of iterative solvers.<br />
<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
<br />
; dinner in town<br />
: That was a very nice time with much discussion about future of Octave and Octave Forge, packages, and makefiles.<br />
<br />
; email maintainers mailing list with conclusions<br />
: done<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; SWAN presentation<br />
: CERN presented their customized Jupyter instance named SWAN which integrates with the other CERN tools for data and data processing.<br />
<br />
; make {{Codeline|--no-gui}} default<br />
: Mike http://lists.gnu.org/archive/html/octave-maintainers/2018-03/msg00044.html suggested on the mailing to make this change for the upcoming 4.4 release. We discussed it all together, and everyone agrees. This should make things simpler for everyone. There will be only one flag which will be {{Codeline|--gui}} to start the gui and will be used by launchers. This will simplify the octave code too since we will no longer have to guess whether to start it or not based on whether we have persist or scripts to eval.<br />
:<br />
: We then coded that change.<br />
<br />
; review our review of code contributions<br />
: a quick rehash of previous discussions. We do a lousy job at review contributions and would need better tools to make the reviewing easier. However, no is available to have such a tool which actually means replacing savannah with our own instance.<br />
<br />
; the complicated code in pkg<br />
: Juan showed that the code in pkg is a bit overcomplicated. Some changes were done to simplify it some 3-4 years ago but never got merged. Those changes no longer apply. Juan will try to make those changes again but first will be adding tests for pkg.<br />
<br />
; warning users if installing packages with url<br />
: discussed adding a warning that a package was not community maintained if user tried to use a url, and required user to answer yes or no. Decided against such warning. We may instead consider add a warning in the future if user tries to install something with an insecure connection (http:// instead of https:// or file://)<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
: It was done. In the process of merging default to stable, we may do that tomorrow instead.<br />
<br />
; new release of image package<br />
: carandraug not even had time to get to it, too busy with changes to core and more discussions.<br />
<br />
; more tests to increase code coverage<br />
<br />
; CERN visit<br />
<br />
; email maintainers mailing list with conclusions<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
: We discussed the place, date, feee, and objective of OctConf 2019.<br />
: ----<br />
: For '''place''', CERN offered to host it again next year. However, it was also suggested that we should try other places to meet new people and make it easier for people from far away, namely west coast USA. However, this also means more work since it's new logistics and other places have different costs. Seems like most contributions are European and flying them all to USA would be more expensive than flying the American developers to Europe. CERN is also quite cheap. Flying to Geneva from Europe is cheap, the rooms are free, and the CERN hotels are very affordable. It was also suggested to change place every two years or to come to CERN every two years with a new place each other year. We decided to have a call for an organizer, with a deadline of 1st of May. If no suitable option appears, then the place will be CERN. Rik will send out the call for organizer.<br />
: ----<br />
: The '''date''' for the conference in 2019 must happen during the second half of March or the first half of April, according to the organizers availability. If it happens at CERN, it must be after 17th of March to avoid the motor exposition. As for the duration, next time it will be 3 full days instead of 2 days and two half days. The morning of the first day will be planning for the other days and the last evening to discuss OctConf 2020.<br />
: ----<br />
: Because of free '''registration''', many registered people do not show. This makes organization difficult, we don't know how much coffee to order, how many people for the restaurants, or the size of the room. We will introduce a registration fee of ~ 20€ which then can be used to cover some costs of the social event. Other possibilities is a much higher fee which would include the accommodation since if attendees are coming, they would have to pay anyway. However, it was decided against since they will only see the high cost and decide against coming.<br />
: ----<br />
: This years conference was pretty much a '''developers''' conference. There was a total of 3 talks with all other time spent on discussing developer topics and coding. It was discussed the issue of Octave visibility and that a user space could exist during OctConf, which would be one day for users to present their work to each other and have some workshops. This could even happen at the same time as developers would meet on other rooms. It was decided against, as there was not enough interest among the developers. This makes organization simpler since we also only need a smaller room with a whiteboard. There will be john's yearly talk about the state of Octave and Rik will make a more outreach talk, more sales pitch, showing what can be done with Octave and where it is being used.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10762OctConf 2018 Notes2018-03-15T12:29:13Z<p>Carandraug: /* Thursday */</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
: we have questioned the value of this. Most students don't stay after GSoC and most projects do not get merged into core and the packages. Even if it costs us no money, it costs us a lot of time since most students need a lot of hand holding, and it's the whole community that is actually mentoring. Ignoring the students is also not nice to them. Nir is the person responsible and he's not attending this year so we are not deciding anything. However, we need to ensure that students know much, and do a better job at filtering out clueless students.<br />
<br />
; refactoring (threading) / developer docs / symbol naming / liboctave interface stability and usability<br />
: These are all very related issues. We have some issues threading and those are mainly because we don't know how to do things properly. Some of us have learned how since but we don't have that knowledge shared and so it's a bit of lack of documentation for ourselves. We decided that changes to Octave internals, the C++ stuff, will need to include doxygen docs for the things that it changes. We have notes on how to write doxygen docs on our [[C++ style guide#Doxygen|C++ style guide]].<br />
: We also have builds of doxygen docs online, including development version http://octave.org/doxygen/ but they are not up to date. jwe will set his build bots to update the doxygen docs daily.<br />
: We also discussed making available builds of the default branch for users. This would be nice because we get users reporting bugs earlier. However, we are afraid that people will not understand that the latest version is a work in progress, not the latest usable version. So we decided against making such builds available.<br />
<br />
; test coverage<br />
: We can already get the line coverage of our test suite if we run make coverage but that only includes the C++ code. jwe says that it would be simple to add some fields to the interpreter that would allow us to also get the line coverage. This would only be done if Octave was built with specific flags. Oliver pointed out that because of vectorized options, line coverage in m file is not as useful as in other languages since the conditions that in other languages is done with if blocks, are instead done by using indexing with an empty array of an array of false elements.<br />
<br />
; measurements of performance<br />
: the test suite is not the best measure of performance. We are estimating that most of its time is spent on running assert which is irrelevant for real Octave programs. It is also mainly cover corner cases and a lot of tests are if it fails when input checking is correct. We should instead have real Octave programs that we used for benchmarking. There wasn't much discussion of this topic beyond noting the problem exists.<br />
<br />
; Octave Forge community<br />
:Currently, there is a high barrier to publish new packages for Octave on Octave-Forge. This mainly comes from the maintenance burden that the Octave Forge Community has with the packages. In particular:<br />
:* The package has to be actively maintained in order to stay compatible with updates to Octave core<br />
:* There is no known good solution to have a Matlab-compatible package, which respects the requirements of an OF package<br />
:* The list of initial requirements (legal and technical) is quite high for outside contributers, especially for domain experts (which we want to address) who are no software engineers<br />
: This creates problems for some external package authors, who basically want to release on their own. Also, this is not resolved by the *two package groups* that we have introduced during the last year.<br />
:<br />
: We see potential for more Octave package publications, which come from “one-off” publications (e. g. with a book / thesis), existing Matlab packages (which also offer a Octave variant), and simple (experimental) libraries of m-files. To increase the pool of high-level users we need to reduce even more the burden to install and distribute packages independently.<br />
:<br />
: The problem that we see today is that Octave-Forge is two-fold: (1) a (collaborative) software development platform and (2) a (re-)distributor of software. So, these new use-cases would not be part of Octave-Forge. In the context of an increasing number of independent “Github developers” this is not needed so much.<br />
:<br />
: To do this we bring back the idea of allowing `pkg` to download and install directly from a url to a `.zip` file or `.tar.gz` file, e.g. `pkg install 'https://myrepo.org/mypackage.zip'`<br />
:* There will be no checks (nor quality standard) on these packages and the user should be clearly warned:<br />
:** Security issue: With no https the download can be redirected. The user can be tricked into entering this command, which downloads and installs (=runs) arbitrary software.<br />
:** Feedback/QA issue: If that package doesn't work, users are probably asking for help.<br />
:* Should `pkg update` also work for these packages?<br />
:** Maybe no. Just re-run the install command.<br />
:** If needed, there could be an update url in the DESCRIPTION file<br />
:* We need to provide guidelines, recommendations and tools for people trying to distribute their packages. We are doing something in this direction, but we need a little boost here: https://octave.sourceforge.io/templates/Makefile, https://sourceforge.net/p/octave/example-package/ci/default/tree/<br />
:* If a package can be installed directly from the repository, it would be supported out-of-the-box by Github, Gitlab, …<br />
:<br />
:Also, we discussed a “package database” like it is done in Julia (see [https://github.com/JuliaLang/METADATA.jl] for a very lightweight solution, which only contains package names, URLs and version), but don't see advantages from that right now.<br />
<br />
; packages into Octave core<br />
: Decided that Octave releases will include some core packages. These will be developed along Octave core, in the same repository, and will be released at the same time. For all purposes they will be a single software project. However, they will still need to be loaded like any other packages.<br />
: Initially, these packages will cover signal processing, statistics, image processing, optimisation, communications, and control. Their aim is to be compatible with their Matlab counterparts and they will be partly imported from the existing Octave Forge packages.<br />
: We won't import all packages in one go. We will start with statistics because we have recently moved a bunch of core functions into it and so they will be easier to import back. signal will probably follow but Pantxo pointed out that this would require a lot of work on its documentation. optim and communications will probably go last since communications is abandoned and optim does not actually have many Matlab compatible functions.<br />
: The current forge packages include extra functions that are not in the Matlab counterparts and their inclusion in the core packages will be decided on a case by case basis. Not sure what will happen with them most likely they would go into a separate package like statistics-legacy.<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked remotely on merging Cristiano Dorigo's improvement of iterative solvers.<br />
<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
<br />
; dinner in town<br />
: That was a very nice time with much discussion about future of Octave and Octave Forge, packages, and makefiles.<br />
<br />
; email maintainers mailing list with conclusions<br />
: done<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; SWAN presentation<br />
: CERN presented their customized Jupyter instance named SWAN which integrates with the other CERN tools for data and data processing.<br />
<br />
; make {{Codeline|--no-gui}} default<br />
: Mike http://lists.gnu.org/archive/html/octave-maintainers/2018-03/msg00044.html suggested on the mailing to make this change for the upcoming 4.4 release. We discussed it all together, and everyone agrees. This should make things simpler for everyone. There will be only one flag which will be {{Codeline|--gui}} to start the gui and will be used by launchers. This will simplify the octave code too since we will no longer have to guess whether to start it or not based on whether we have persist or scripts to eval.<br />
:<br />
: We then coded that change.<br />
<br />
; review our review of code contributions<br />
: a quick rehash of previous discussions. We do a lousy job at review contributions and would need better tools to make the reviewing easier. However, no is available to have such a tool which actually means replacing savannah with our own instance.<br />
<br />
; the complicated code in pkg<br />
: Juan showed that the code in pkg is a bit overcomplicated. Some changes were done to simplify it some 3-4 years ago but never got merged. Those changes no longer apply. Juan will try to make those changes again but first will be adding tests for pkg.<br />
<br />
; warning users if installing packages with url<br />
: discussed adding a warning that a package was not community maintained if user tried to use a url, and required user to answer yes or no. Decided against such warning. We may instead consider add a warning in the future if user tries to install something with an insecure connection (http:// instead of https:// or file://)<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
: It was done. In the process of merging default to stable, we may do that tomorrow instead.<br />
<br />
; new release of image package<br />
: carandraug not even had time to get to it, too busy with changes to core and more discussions.<br />
<br />
; more tests to increase code coverage<br />
<br />
; CERN visit<br />
<br />
; email maintainers mailing list with conclusions<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
: We discussed the place, date, feee, and objective of OctConf 2019.<br />
: ----<br />
: For '''place''', CERN offered to host it again next year. However, it was also suggested that we should try other places to meet new people and make it easier for people from far away, namely west coast USA. However, this also means more work since it's new logistics and other places have different costs. Seems like most contributions are European and flying them all to USA would be more expensive than flying the American developers to Europe. CERN is also quite cheap. Flying to Geneva from Europe is cheap, the rooms are free, and the CERN hotels are very affordable. It was also suggested to change place every two years or to come to CERN every two years with a new place each other year. We decided to have a call for an organizer, with a deadline of 1st of May. If no suitable option appears, then the place will be CERN. Rik will send out the call for organizer.<br />
: ----<br />
: The '''date''' for the conference in 2019 must happen during the second half of March or the first half of April, according to the organizers availability. If it happens at CERN, it must be after 17th of March to avoid the motor exposition. As for the duration, next time it will be 3 full days instead of 2 days and two half days. The morning of the first day will be planning for the other days and the last evening to discuss OctConf 2020.<br />
: ----<br />
: Because of free '''registration''', many registered people do not show. This makes organization difficult, we don't know how much coffee to order, how many people for the restaurants, or the size of the room. We will introduce a registration fee of ~ 20€ which then can be used to cover some costs of the social event. Other possibilities is a much higher fee which would include the accommodation since if attendees are coming, they would have to pay anyway. However, it was decided against since they will only see the high cost and decide against coming.<br />
: ----<br />
: This years conference was pretty much a '''developers''' conference. There was a total of 3 talks with all other time spent on discussing developer topics and coding. It was discussed the issue of Octave visibility and that a user space could exist during OctConf, which would be one day for users to present their work to each other and have some workshops. This could even happen at the same time as developers would meet on other rooms. It was decided against, as there was not enough interest among the developers. This makes organization simpler since we also only need a smaller room with a whiteboard. There will be john's yearly talk about the state of Octave and Rik will make a more outreach talk, more sales pitch, showing what can be done with Octave and where it is being used.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10761OctConf 2018 Notes2018-03-15T11:32:19Z<p>Carandraug: /* Talking */ more details about Octconf 2019</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
: we have questioned the value of this. Most students don't stay after GSoC and most projects do not get merged into core and the packages. Even if it costs us no money, it costs us a lot of time since most students need a lot of hand holding, and it's the whole community that is actually mentoring. Ignoring the students is also not nice to them. Nir is the person responsible and he's not attending this year so we are not deciding anything. However, we need to ensure that students know much, and do a better job at filtering out clueless students.<br />
<br />
; refactoring (threading) / developer docs / symbol naming / liboctave interface stability and usability<br />
: These are all very related issues. We have some issues threading and those are mainly because we don't know how to do things properly. Some of us have learned how since but we don't have that knowledge shared and so it's a bit of lack of documentation for ourselves. We decided that changes to Octave internals, the C++ stuff, will need to include doxygen docs for the things that it changes. We have notes on how to write doxygen docs on our [[C++ style guide#Doxygen|C++ style guide]].<br />
: We also have builds of doxygen docs online, including development version http://octave.org/doxygen/ but they are not up to date. jwe will set his build bots to update the doxygen docs daily.<br />
: We also discussed making available builds of the default branch for users. This would be nice because we get users reporting bugs earlier. However, we are afraid that people will not understand that the latest version is a work in progress, not the latest usable version. So we decided against making such builds available.<br />
<br />
; test coverage<br />
: We can already get the line coverage of our test suite if we run make coverage but that only includes the C++ code. jwe says that it would be simple to add some fields to the interpreter that would allow us to also get the line coverage. This would only be done if Octave was built with specific flags. Oliver pointed out that because of vectorized options, line coverage in m file is not as useful as in other languages since the conditions that in other languages is done with if blocks, are instead done by using indexing with an empty array of an array of false elements.<br />
<br />
; measurements of performance<br />
: the test suite is not the best measure of performance. We are estimating that most of its time is spent on running assert which is irrelevant for real Octave programs. It is also mainly cover corner cases and a lot of tests are if it fails when input checking is correct. We should instead have real Octave programs that we used for benchmarking. There wasn't much discussion of this topic beyond noting the problem exists.<br />
<br />
; Octave Forge community<br />
:Currently, there is a high barrier to publish new packages for Octave on Octave-Forge. This mainly comes from the maintenance burden that the Octave Forge Community has with the packages. In particular:<br />
:* The package has to be actively maintained in order to stay compatible with updates to Octave core<br />
:* There is no known good solution to have a Matlab-compatible package, which respects the requirements of an OF package<br />
:* The list of initial requirements (legal and technical) is quite high for outside contributers, especially for domain experts (which we want to address) who are no software engineers<br />
: This creates problems for some external package authors, who basically want to release on their own. Also, this is not resolved by the *two package groups* that we have introduced during the last year.<br />
:<br />
: We see potential for more Octave package publications, which come from “one-off” publications (e. g. with a book / thesis), existing Matlab packages (which also offer a Octave variant), and simple (experimental) libraries of m-files. To increase the pool of high-level users we need to reduce even more the burden to install and distribute packages independently.<br />
:<br />
: The problem that we see today is that Octave-Forge is two-fold: (1) a (collaborative) software development platform and (2) a (re-)distributor of software. So, these new use-cases would not be part of Octave-Forge. In the context of an increasing number of independent “Github developers” this is not needed so much.<br />
:<br />
: To do this we bring back the idea of allowing `pkg` to download and install directly from a url to a `.zip` file or `.tar.gz` file, e.g. `pkg install 'https://myrepo.org/mypackage.zip'`<br />
:* There will be no checks (nor quality standard) on these packages and the user should be clearly warned:<br />
:** Security issue: With no https the download can be redirected. The user can be tricked into entering this command, which downloads and installs (=runs) arbitrary software.<br />
:** Feedback/QA issue: If that package doesn't work, users are probably asking for help.<br />
:* Should `pkg update` also work for these packages?<br />
:** Maybe no. Just re-run the install command.<br />
:** If needed, there could be an update url in the DESCRIPTION file<br />
:* We need to provide guidelines, recommendations and tools for people trying to distribute their packages. We are doing something in this direction, but we need a little boost here: https://octave.sourceforge.io/templates/Makefile, https://sourceforge.net/p/octave/example-package/ci/default/tree/<br />
:* If a package can be installed directly from the repository, it would be supported out-of-the-box by Github, Gitlab, …<br />
:<br />
:Also, we discussed a “package database” like it is done in Julia (see [https://github.com/JuliaLang/METADATA.jl] for a very lightweight solution, which only contains package names, URLs and version), but don't see advantages from that right now.<br />
<br />
; packages into Octave core<br />
: Decided that Octave releases will include some core packages. These will be developed along Octave core, in the same repository, and will be released at the same time. For all purposes they will be a single software project. However, they will still need to be loaded like any other packages.<br />
: Initially, these packages will cover signal processing, statistics, image processing, optimisation, communications, and control. Their aim is to be compatible with their Matlab counterparts and they will be partly imported from the existing Octave Forge packages.<br />
: We won't import all packages in one go. We will start with statistics because we have recently moved a bunch of core functions into it and so they will be easier to import back. signal will probably follow but Pantxo pointed out that this would require a lot of work on its documentation. optim and communications will probably go last since communications is abandoned and optim does not actually have many Matlab compatible functions.<br />
: The current forge packages include extra functions that are not in the Matlab counterparts and their inclusion in the core packages will be decided on a case by case basis. Not sure what will happen with them most likely they would go into a separate package like statistics-legacy.<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked remotely on merging Cristiano Dorigo's improvement of iterative solvers.<br />
<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
<br />
; dinner in town<br />
: That was a very nice time with much discussion about future of Octave and Octave Forge, packages, and makefiles.<br />
<br />
; email maintainers mailing list with conclusions<br />
: done<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; SWAN presentation<br />
: CERN presented their customized Jupyter instance named SWAN which integrates with the other CERN tools for data and data processing.<br />
<br />
; make {{Codeline|--no-gui}} default<br />
: Mike http://lists.gnu.org/archive/html/octave-maintainers/2018-03/msg00044.html suggested on the mailing to make this change for the upcoming 4.4 release. We discussed it all together, and everyone agrees. This should make things simpler for everyone. There will be only one flag which will be {{Codeline|--gui}} to start the gui and will be used by launchers. This will simplify the octave code too since we will no longer have to guess whether to start it or not based on whether we have persist or scripts to eval.<br />
:<br />
: We then coded that change.<br />
<br />
; review our review of code contributions<br />
: a quick rehash of previous discussions. We do a lousy job at review contributions and would need better tools to make the reviewing easier. However, no is available to have such a tool which actually means replacing savannah with our own instance.<br />
<br />
; the complicated code in pkg<br />
: Juan showed that the code in pkg is a bit overcomplicated. Some changes were done to simplify it some 3-4 years ago but never got merged. Those changes no longer apply. Juan will try to make those changes again but first will be adding tests for pkg.<br />
<br />
; warning users if installing packages with url<br />
: discussed adding a warning that a package was not community maintained if user tried to use a url, and required user to answer yes or no. Decided against such warning. We may instead consider add a warning in the future if user tries to install something with an insecure connection (http:// instead of https:// or file://)<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
: It was done. In the process of merging default to stable, we may do that tomorrow instead.<br />
<br />
; new release of image package<br />
: carandraug not even had time to get to it, too busy with changes to core and more discussions.<br />
<br />
; more tests to increase code coverage<br />
<br />
; CERN visit<br />
<br />
; email maintainers mailing list with conclusions<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
: We discussed the place, date, feee, and objective of OctConf 2019.<br />
: ----<br />
: For '''place''', CERN offered to host it again next year. However, it was also suggested that we should try other places to meet new people and make it easier for people from far away, namely west coast USA. However, this also means more work since it's new logistics and other places have different costs. Seems like most contributions are European and flying them all to USA would be more expensive than flying the American developers to Europe. CERN is also quite cheap. Flying to Geneva from Europe is cheap, the rooms are free, and the CERN hotels are very affordable. It was also suggested to change place every two years or to come to CERN every two years with a new place each other year. We decided to have a call for an organizer, with a deadline of 1st of May. If no suitable option appears, then the place will be CERN. Rik will send out the call for organizer.<br />
: ----<br />
: The '''date''' for the conference in 2019 must happen during the second half of March or the first half of April, according to the organizers availability. If it happens at CERN, it must be after 17th of March to avoid the motor exposition.<br />
: ----<br />
: Because of free '''registration''', many registered people do not show. This makes organization difficult, we don't know how much coffee to order, how many people for the restaurants, or the size of the room. We will introduce a registration fee of ~ 20€ which then can be used to cover some costs of the social event. Other possibilities is a much higher fee which would include the accommodation since if attendees are coming, they would have to pay anyway. However, it was decided against since they will only see the high cost and decide against coming.<br />
: ----<br />
: This years conference was pretty much a '''developers''' conference. There was a total of 3 talks with all other time spent on discussing developer topics and coding. It was discussed the issue of Octave visibility and that a user space could exist during OctConf, which would be one day for users to present their work to each other and have some workshops. This could even happen at the same time as developers would meet on other rooms. It was decided against, as there was not enough interest among the developers. This makes organization simpler since we also only need a smaller room with a whiteboard. There will be john's yearly talk about the state of Octave and Rik will make a more outreach talk, more sales pitch, showing what can be done with Octave and where it is being used.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=MediaWiki:Top-notice-ns-0&diff=10748MediaWiki:Top-notice-ns-02018-03-14T18:31:59Z<p>Carandraug: remove header, octconf 2018 is finished</p>
<hr />
<div></div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10746OctConf 2018 Notes2018-03-14T18:16:35Z<p>Carandraug: /* Wednesday */ add notes for today</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
: we have questioned the value of this. Most students don't stay after GSoC and most projects do not get merged into core and the packages. Even if it costs us no money, it costs us a lot of time since most students need a lot of hand holding, and it's the whole community that is actually mentoring. Ignoring the students is also not nice to them. Nir is the person responsible and he's not attending this year so we are not deciding anything. However, we need to ensure that students know much, and do a better job at filtering out clueless students.<br />
<br />
; refactoring (threading) / developer docs / symbol naming / liboctave interface stability and usability<br />
: These are all very related issues. We have some issues threading and those are mainly because we don't know how to do things properly. Some of us have learned how since but we don't have that knowledge shared and so it's a bit of lack of documentation for ourselves. We decided that changes to Octave internals, the C++ stuff, will need to include doxygen docs for the things that it changes. We have notes on how to write doxygen docs on our [[C++ style guide#Doxygen|C++ style guide]].<br />
: We also have builds of doxygen docs online, including development version http://octave.org/doxygen/ but they are not up to date. jwe will set his build bots to update the doxygen docs daily.<br />
: We also discussed making available builds of the default branch for users. This would be nice because we get users reporting bugs earlier. However, we are afraid that people will not understand that the latest version is a work in progress, not the latest usable version. So we decided against making such builds available.<br />
<br />
; test coverage<br />
: We can already get the line coverage of our test suite if we run make coverage but that only includes the C++ code. jwe says that it would be simple to add some fields to the interpreter that would allow us to also get the line coverage. This would only be done if Octave was built with specific flags. Oliver pointed out that because of vectorized options, line coverage in m file is not as useful as in other languages since the conditions that in other languages is done with if blocks, are instead done by using indexing with an empty array of an array of false elements.<br />
<br />
; measurements of performance<br />
: the test suite is not the best measure of performance. We are estimating that most of its time is spent on running assert which is irrelevant for real Octave programs. It is also mainly cover corner cases and a lot of tests are if it fails when input checking is correct. We should instead have real Octave programs that we used for benchmarking. There wasn't much discussion of this topic beyond noting the problem exists.<br />
<br />
; Octave Forge community<br />
:Currently, there is a high barrier to publish new packages for Octave on Octave-Forge. This mainly comes from the maintenance burden that the Octave Forge Community has with the packages. In particular:<br />
:* The package has to be actively maintained in order to stay compatible with updates to Octave core<br />
:* There is no known good solution to have a Matlab-compatible package, which respects the requirements of an OF package<br />
:* The list of initial requirements (legal and technical) is quite high for outside contributers, especially for domain experts (which we want to address) who are no software engineers<br />
: This creates problems for some external package authors, who basically want to release on their own. Also, this is not resolved by the *two package groups* that we have introduced during the last year.<br />
:<br />
: We see potential for more Octave package publications, which come from “one-off” publications (e. g. with a book / thesis), existing Matlab packages (which also offer a Octave variant), and simple (experimental) libraries of m-files. To increase the pool of high-level users we need to reduce even more the burden to install and distribute packages independently.<br />
:<br />
: The problem that we see today is that Octave-Forge is two-fold: (1) a (collaborative) software development platform and (2) a (re-)distributor of software. So, these new use-cases would not be part of Octave-Forge. In the context of an increasing number of independent “Github developers” this is not needed so much.<br />
:<br />
: To do this we bring back the idea of allowing `pkg` to download and install directly from a url to a `.zip` file or `.tar.gz` file, e.g. `pkg install 'https://myrepo.org/mypackage.zip'`<br />
:* There will be no checks (nor quality standard) on these packages and the user should be clearly warned:<br />
:** Security issue: With no https the download can be redirected. The user can be tricked into entering this command, which downloads and installs (=runs) arbitrary software.<br />
:** Feedback/QA issue: If that package doesn't work, users are probably asking for help.<br />
:* Should `pkg update` also work for these packages?<br />
:** Maybe no. Just re-run the install command.<br />
:** If needed, there could be an update url in the DESCRIPTION file<br />
:* We need to provide guidelines, recommendations and tools for people trying to distribute their packages. We are doing something in this direction, but we need a little boost here: https://octave.sourceforge.io/templates/Makefile, https://sourceforge.net/p/octave/example-package/ci/default/tree/<br />
:* If a package can be installed directly from the repository, it would be supported out-of-the-box by Github, Gitlab, …<br />
:<br />
:Also, we discussed a “package database” like it is done in Julia (see [https://github.com/JuliaLang/METADATA.jl] for a very lightweight solution, which only contains package names, URLs and version), but don't see advantages from that right now.<br />
<br />
; packages into Octave core<br />
: Decided that Octave releases will include some core packages. These will be developed along Octave core, in the same repository, and will be released at the same time. For all purposes they will be a single software project. However, they will still need to be loaded like any other packages.<br />
: Initially, these packages will cover signal processing, statistics, image processing, optimisation, communications, and control. Their aim is to be compatible with their Matlab counterparts and they will be partly imported from the existing Octave Forge packages.<br />
: We won't import all packages in one go. We will start with statistics because we have recently moved a bunch of core functions into it and so they will be easier to import back. signal will probably follow but Pantxo pointed out that this would require a lot of work on its documentation. optim and communications will probably go last since communications is abandoned and optim does not actually have many Matlab compatible functions.<br />
: The current forge packages include extra functions that are not in the Matlab counterparts and their inclusion in the core packages will be decided on a case by case basis. Not sure what will happen with them most likely they would go into a separate package like statistics-legacy.<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked remotely on merging Cristiano Dorigo's improvement of iterative solvers.<br />
<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
<br />
; dinner in town<br />
: That was a very nice time with much discussion about future of Octave and Octave Forge, packages, and makefiles.<br />
<br />
; email maintainers mailing list with conclusions<br />
: done<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; SWAN presentation<br />
: CERN presented their customized Jupyter instance named SWAN which integrates with the other CERN tools for data and data processing.<br />
<br />
; make {{Codeline|--no-gui}} default<br />
: Mike http://lists.gnu.org/archive/html/octave-maintainers/2018-03/msg00044.html suggested on the mailing to make this change for the upcoming 4.4 release. We discussed it all together, and everyone agrees. This should make things simpler for everyone. There will be only one flag which will be {{Codeline|--gui}} to start the gui and will be used by launchers. This will simplify the octave code too since we will no longer have to guess whether to start it or not based on whether we have persist or scripts to eval.<br />
:<br />
: We then coded that change.<br />
<br />
; review our review of code contributions<br />
: a quick rehash of previous discussions. We do a lousy job at review contributions and would need better tools to make the reviewing easier. However, no is available to have such a tool which actually means replacing savannah with our own instance.<br />
<br />
; the complicated code in pkg<br />
: Juan showed that the code in pkg is a bit overcomplicated. Some changes were done to simplify it some 3-4 years ago but never got merged. Those changes no longer apply. Juan will try to make those changes again but first will be adding tests for pkg.<br />
<br />
; warning users if installing packages with url<br />
: discussed adding a warning that a package was not community maintained if user tried to use a url, and required user to answer yes or no. Decided against such warning. We may instead consider add a warning in the future if user tries to install something with an insecure connection (http:// instead of https:// or file://)<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
: It was done. In the process of merging default to stable, we may do that tomorrow instead.<br />
<br />
; new release of image package<br />
: carandraug not even had time to get to it, too busy with changes to core and more discussions.<br />
<br />
; more tests to increase code coverage<br />
<br />
; CERN visit<br />
<br />
; email maintainers mailing list with conclusions<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
; pending discussions and work<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Mercurial&diff=10740Mercurial2018-03-14T16:30:20Z<p>Carandraug: /* Mercurial configuration */ add colour configuration</p>
<hr />
<div>[[wikipedia:Mercurial|Mercurial]] (sometimes referred to as {{codeline|hg}})<br />
is the source code management system currently used to develop<br />
Octave.<br />
<br />
== Introduction to Mercurial ==<br />
<br />
An introduction to Mercurial is completely outside the scope of this document.<br />
There are plenty of available documentation on the topic. Some recommendations<br />
are:<br />
<br />
* [http://hginit.com/ Hg Init]<br />
* [https://www.mercurial-scm.org/wiki/Tutorial Mercurial tutorial]<br />
* [https://www.mercurial-scm.org/wiki/QuickStart Mercurial quick start]<br />
<br />
== Contributing to Octave ==<br />
<br />
The preferred method to contribute to Octave is with Mercurial changesets.<br />
Other forms of contributions (e.g., simple diff patches) are<br />
also acceptable, but they slow down the review process.<br />
<br />
If you plan on contributing to Octave:<br />
<br />
* See other [[Contribution guidelines]]<br />
* Always include commit messages in changesets. Please follow the Octave [[commit message guidelines]]<br />
* Follow the style guides for both [[Octave style guide|Octave]] and [[C++ style guide|C++]] languages.<br />
<br />
== Getting the development sources ==<br />
<br />
To clone the Octave repository:<br />
<br />
hg clone http://www.octave.org/hg/octave octave<br />
<br />
Octave packages like image, signal, control, etc. are not parts of Octave<br />
itself, they belong to the Octave Forge. Each package has its own<br />
repository, a list of which can be found<br />
[http://sourceforge.net/p/octave/_list/hg?source=navbar here].<br />
You can clone them in a similar way, for example, to clone the signal package<br />
<br />
hg clone http://hg.code.sf.net/p/octave/signal octave-signal<br />
<br />
== Mercurial configuration ==<br />
<br />
You can use the following to start your hgrc<br />
<br />
{{File||<pre><br />
[ui]<br />
username = Your Name <your@email><br />
<br />
[extensions]<br />
color =<br />
histedit =<br />
pager =<br />
rebase =<br />
strip =<br />
<br />
[pager]<br />
pager = LESS='FSRX' less<br />
attend = help, annotate, cat, diff, export, glog, log, outgoing, incoming<br />
<br />
[diff]<br />
showfunc = True<br />
<br />
[color]<br />
mode = terminfo<br />
<br />
## Custom colours<br />
color.orange = 202<br />
color.lightyellow = 191<br />
color.darkorange = 220<br />
color.brightyellow = 226<br />
<br />
status.modified = magenta bold<br />
status.added = green bold<br />
status.removed = red bold<br />
status.deleted = cyan bold<br />
status.unknown = gray bold<br />
status.ignored = gray bold<br />
<br />
## Colours for each label<br />
log.branch = cyan<br />
log.summary = lightyellow<br />
log.description = lightyellow<br />
log.bookmark = green<br />
log.tag = darkorange<br />
log.graph = blue<br />
<br />
## Colors for each phase<br />
changeset.secret = blue bold<br />
changeset.draft = red bold<br />
changeset.public = orange<br />
<br />
desc.here = bold blue_background<br />
<br />
[bookmarks]<br />
track.current = True<br />
<br />
[alias]<br />
glog = log --graph<br />
top = log --graph -l<br />
</pre>}}<br />
<br />
== Submitting patches ==<br />
<br />
When you do not have push permissions to the repository (you cannot add your changes using mercurial itself) and you have a modification to the current GNU Octave code, you have to generate a patch (or changeset) so developers with permissions can include them in the code. The overview of the process is as follows<br />
# Change the code and test that your changes do work (write tests, that's the best!).<br />
# Create the changeset (instructions below). <br />
# Post your patch in the [https://savannah.gnu.org/patch/?group=octave Patch tracker].<br />
<br />
<br />
Patch submissions is done via the [https://savannah.gnu.org/bugs/?group=octave bug]<br />
or [https://savannah.gnu.org/patch/?group=octave patch] trackers. Either<br />
way, you can submit via two different methods: pull requests on attaching<br />
a changeset file.<br />
<br />
=== Pull request ===<br />
<br />
This is the cleaner way. You push your clone to public site, and ask on the<br />
bug tracker to pull a specific changeset from it. It makes special sense if<br />
you plan to send more patches in the future but requires to host the clone<br />
somewhere. Free mercurial repositories are available on [https://bitbucket.org/ bitbucket]<br />
<br />
<br />
=== Creating changesets files with hg ===<br />
==== Simple way ====<br />
* Update to the latest revision. <br />
<pre> hg up </pre><br />
* Make your changes and save them. <br />
* Commit your code. Mercurial will ask you for a commit message, which should follow the [[commit message guidelines]].<br />
<pre> hg ci </pre><br />
* Export the modifications. This creates a file (in the case of the example below, it is called mypatch.patch) that contains a description of the changes that you've made. Someone else can then apply the patch and end up with a repository that looks the same as yours.<br />
<pre> hg export -r tip -o mypatch.patch </pre><br />
* Save the output to a file and upload it to the patch tracker. If your patch file is larger than the upload limit, you can compress it before uploading. Please use a free format!<br />
<br />
== Mercurial Tips for SoC students ==<br />
<br />
This section is meant to provide tips for SOCIS or GSoC students working on new Octave features.<br />
<br />
Students should publish their work as it progresses in a public repository <br />
merging regularly the main savannah repository to facilitate merging back their <br />
code at the end of the project. <br />
<br />
Here are some useful hg commands that can be used to do this.<br />
<br />
=== Getting started ===<br />
<!--[[File:Hg-student-start.png]]--><br />
<ol><br />
<li> Clone the main Octave repository at savannah:<br><br />
<code> hg clone http://www.octave.org/hg/octave </code> </li><br />
<li> Create a new bookmark:<br><br />
<code> hg bookmark student-bookmark-name </code> </li><br />
<li> Make the bookmark visible in the public repo, assuming the public repo is at <code>public.server.org/octave</code><br><br />
<code> hg push --bookmark ssh://student@public.server.org/octave </code> </li><br />
</ol><br />
<br />
=== Staying up-to-date with the main savannah repository ===<br />
<br />
<!-- After working for a while, the public repo should look like the following picture. --><br />
As the students development proceeds,<br />
the savannah repository gets updated, too. <br />
To avoid having the two branches diverging too much, which can<br />
lead to conflicts when the final merge is done, students should<br />
keep their public repo up-to-date with the recent changes, <br />
the following commands can be used for this:<br/><br />
<ol><br />
<!--[[File:Hg-student-flow1.png]] <br/>--><br />
<li> Download new changes from the main line of development <br/><br />
<code> hg pull http://www.octave.org/hg/octave </code> </li><br />
<li> Merge the main line of development into the feature branch <br/><br />
<code> hg up -r student-bookmark-name </code> <br/><br />
<!--[[File:Hg-student-flow2.png]] <br/>--><br />
<code> hg merge @ </code> </li><br />
<li> Apply the change and publish it <br/><br />
<code> hg commit -m "periodic merge of default branch into my branch" </code> <br/><br />
<!--[[File:Hg-student-flow3.png]] <br/>--><br />
<code> hg push ssh://student@public.server.org/octave </code></li><br />
</ol><br />
<br />
=== Preparing for code reviews ===<br />
At the time of the mid-term or final review (or whenever the mentor requires it) students should prepare their code <br />
for review and possibly inclusion into the main development branch. To this end students should:<br />
<ol><br />
<li> prepare a full log of their changes, listing files that have been touched <br />
and including a summary of the purpose of those changes. If students have been following <br />
the [[Commit message guidelines]] the following command will give a good starting point<br> <br />
<code> hg log --style=changelog --no-merges --user student-name </code><br><br />
this message should be edited so that <br />
<ol style="list-style-type: lower-roman;"><br />
<li> each touched file appears only once </li><br />
<li> changes that were backed out should not be mentioned <!--(like changeset "H" in the above example)--> </li><br />
</ol><br />
The main purpose of this log is to make it easy, not only for the main mentor, but also for other developers who<br />
have not been closely following the progress of the project to quickly understand where to look at in the code to evaluate it, but it will also be used as the commit message for the merge changeset, so it should itself comply with the [[Commit message guidelines]].<br />
<li> prepare a merge changeset including all the code that should be submitted for review<br />
<ol style="list-style-type: lower-roman;"><br />
<li> pull from the main repository<br/><br />
<code>hg pull http://www.octave.org/hg/octave</code></li><br />
<li> move to the top of the main line of development and merge in the feature branch<br/><br />
<code>hg up -r @</code><br/><br />
<code>hg merge student-bookmark-name </code><br/></li><br />
<li> create a changeset, export it and send to the mentor for review, remember to use the log created above as a commit message<br/><br />
<code>hg commit </code><br/><br />
<code>hg export @ > mid-term-review.changeset </code><br/><br />
the file mid-term-review.changeset can then be sent to the [mailto:octave-maintainers@octave.org mailing list] or posted<br />
to the [https://savannah.gnu.org/patch/?group=octave patch tracker]</li><br />
</ol> </li><br />
</ol><br />
<br />
== Mercurial Tips for SoC mentors ==<br />
<br />
Will fill in this section after trying out the above procedure at least once with a student and actually pushing his changes to the main repo.<br />
<!---<br />
<code><br />
hg pull http://student.repo.url<br />
</code><br />
<br />
<code><br />
hg pull http://www.octave.org/hg/octave<br />
</code><br />
<br />
<code><br />
hg up -r @<br />
</code><br />
<br />
<code><br />
hg merge student_bookmark<br />
</code><br />
<br />
<code><br />
hg log --style=changelog --user student<br />
</code><br />
--><br />
<br />
==External links==<br />
<br />
* [https://www.mercurial-scm.org/ Official website]<br />
<br />
[[Category:Development]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10735OctConf 2018 Notes2018-03-14T10:47:34Z<p>Carandraug: /* Wednesday */</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
: we have questioned the value of this. Most students don't stay after GSoC and most projects do not get merged into core and the packages. Even if it costs us no money, it costs us a lot of time since most students need a lot of hand holding, and it's the whole community that is actually mentoring. Ignoring the students is also not nice to them. Nir is the person responsible and he's not attending this year so we are not deciding anything. However, we need to ensure that students know much, and do a better job at filtering out clueless students.<br />
<br />
; refactoring (threading) / developer docs / symbol naming / liboctave interface stability and usability<br />
: These are all very related issues. We have some issues threading and those are mainly because we don't know how to do things properly. Some of us have learned how since but we don't have that knowledge shared and so it's a bit of lack of documentation for ourselves. We decided that changes to Octave internals, the C++ stuff, will need to include doxygen docs for the things that it changes. We have notes on how to write doxygen docs on our [[C++ style guide#Doxygen|C++ style guide]].<br />
: We also have builds of doxygen docs online, including development version http://octave.org/doxygen/ but they are not up to date. jwe will set his build bots to update the doxygen docs daily.<br />
: We also discussed making available builds of the default branch for users. This would be nice because we get users reporting bugs earlier. However, we are afraid that people will not understand that the latest version is a work in progress, not the latest usable version. So we decided against making such builds available.<br />
<br />
; test coverage<br />
: We can already get the line coverage of our test suite if we run make coverage but that only includes the C++ code. jwe says that it would be simple to add some fields to the interpreter that would allow us to also get the line coverage. This would only be done if Octave was built with specific flags. Oliver pointed out that because of vectorized options, line coverage in m file is not as useful as in other languages since the conditions that in other languages is done with if blocks, are instead done by using indexing with an empty array of an array of false elements.<br />
<br />
; measurements of performance<br />
: the test suite is not the best measure of performance. We are estimating that most of its time is spent on running assert which is irrelevant for real Octave programs. It is also mainly cover corner cases and a lot of tests are if it fails when input checking is correct. We should instead have real Octave programs that we used for benchmarking. There wasn't much discussion of this topic beyond noting the problem exists.<br />
<br />
; Octave Forge community<br />
:Currently, there is a high barrier to publish new packages for Octave on Octave-Forge. This mainly comes from the maintenance burden that the Octave Forge Community has with the packages. In particular:<br />
:* The package has to be actively maintained in order to stay compatible with updates to Octave core<br />
:* There is no known good solution to have a Matlab-compatible package, which respects the requirements of an OF package<br />
:* The list of initial requirements (legal and technical) is quite high for outside contributers, especially for domain experts (which we want to address) who are no software engineers<br />
: This creates problems for some external package authors, who basically want to release on their own. Also, this is not resolved by the *two package groups* that we have introduced during the last year.<br />
:<br />
: We see potential for more Octave package publications, which come from “one-off” publications (e. g. with a book / thesis), existing Matlab packages (which also offer a Octave variant), and simple (experimental) libraries of m-files. To increase the pool of high-level users we need to reduce even more the burden to install and distribute packages independently.<br />
:<br />
: The problem that we see today is that Octave-Forge is two-fold: (1) a (collaborative) software development platform and (2) a (re-)distributor of software. So, these new use-cases would not be part of Octave-Forge. In the context of an increasing number of independent “Github developers” this is not needed so much.<br />
:<br />
: To do this we bring back the idea of allowing `pkg` to download and install directly from a url to a `.zip` file or `.tar.gz` file, e.g. `pkg install 'https://myrepo.org/mypackage.zip'`<br />
:* There will be no checks (nor quality standard) on these packages and the user should be clearly warned:<br />
:** Security issue: With no https the download can be redirected. The user can be tricked into entering this command, which downloads and installs (=runs) arbitrary software.<br />
:** Feedback/QA issue: If that package doesn't work, users are probably asking for help.<br />
:* Should `pkg update` also work for these packages?<br />
:** Maybe no. Just re-run the install command.<br />
:** If needed, there could be an update url in the DESCRIPTION file<br />
:* We need to provide guidelines, recommendations and tools for people trying to distribute their packages. We are doing something in this direction, but we need a little boost here: https://octave.sourceforge.io/templates/Makefile, https://sourceforge.net/p/octave/example-package/ci/default/tree/<br />
:* If a package can be installed directly from the repository, it would be supported out-of-the-box by Github, Gitlab, …<br />
:<br />
:Also, we discussed a “package database” like it is done in Julia (see [https://github.com/JuliaLang/METADATA.jl] for a very lightweight solution, which only contains package names, URLs and version), but don't see advantages from that right now.<br />
<br />
; packages into Octave core<br />
: Decided that Octave releases will include some core packages. These will be developed along Octave core, in the same repository, and will be released at the same time. For all purposes they will be a single software project. However, they will still need to be loaded like any other packages.<br />
: Initially, these packages will cover signal processing, statistics, image processing, optimisation, communications, and control. Their aim is to be compatible with their Matlab counterparts and they will be partly imported from the existing Octave Forge packages.<br />
: We won't import all packages in one go. We will start with statistics because we have recently moved a bunch of core functions into it and so they will be easier to import back. signal will probably follow but Pantxo pointed out that this would require a lot of work on its documentation. optim and communications will probably go last since communications is abandoned and optim does not actually have many Matlab compatible functions.<br />
: The current forge packages include extra functions that are not in the Matlab counterparts and their inclusion in the core packages will be decided on a case by case basis. Not sure what will happen with them most likely they would go into a separate package like statistics-legacy.<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked remotely on merging Cristiano Dorigo's improvement of iterative solvers.<br />
<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
<br />
; dinner in town<br />
: That was a very nice time with much discussion about future of Octave and Octave Forge, packages, and makefiles.<br />
<br />
; email maintainers mailing list with conclusions<br />
: done<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; SWAN presentation<br />
: CERN presented their customized Jupyter instance named SWAN which integrates with the other CERN tools for data and data processing.<br />
<br />
; make {{Codeline|--no-gui}} default<br />
: Mike http://lists.gnu.org/archive/html/octave-maintainers/2018-03/msg00044.html suggested on the mailing to make this change for the upcoming 4.4 release. We discussed it all together, and everyone agrees. This should make things simpler for everyone. There will be only one flag which will be {{Codeline|--gui}} to start the gui and will be used by launchers. This will simplify the octave code too since we will no longer have to guess whether to start it or not based on whether we have persist or scripts to eval.<br />
<br />
; review our review of code contributions<br />
; build system issues<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
; new release of image package<br />
; more tests to increase code coverage<br />
; CERN visit<br />
; email maintainers mailing list with conclusions<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
; pending discussions and work<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10734OctConf 2018 Notes2018-03-14T10:47:11Z<p>Carandraug: /* Wednesday */ discussion for no gui</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
: we have questioned the value of this. Most students don't stay after GSoC and most projects do not get merged into core and the packages. Even if it costs us no money, it costs us a lot of time since most students need a lot of hand holding, and it's the whole community that is actually mentoring. Ignoring the students is also not nice to them. Nir is the person responsible and he's not attending this year so we are not deciding anything. However, we need to ensure that students know much, and do a better job at filtering out clueless students.<br />
<br />
; refactoring (threading) / developer docs / symbol naming / liboctave interface stability and usability<br />
: These are all very related issues. We have some issues threading and those are mainly because we don't know how to do things properly. Some of us have learned how since but we don't have that knowledge shared and so it's a bit of lack of documentation for ourselves. We decided that changes to Octave internals, the C++ stuff, will need to include doxygen docs for the things that it changes. We have notes on how to write doxygen docs on our [[C++ style guide#Doxygen|C++ style guide]].<br />
: We also have builds of doxygen docs online, including development version http://octave.org/doxygen/ but they are not up to date. jwe will set his build bots to update the doxygen docs daily.<br />
: We also discussed making available builds of the default branch for users. This would be nice because we get users reporting bugs earlier. However, we are afraid that people will not understand that the latest version is a work in progress, not the latest usable version. So we decided against making such builds available.<br />
<br />
; test coverage<br />
: We can already get the line coverage of our test suite if we run make coverage but that only includes the C++ code. jwe says that it would be simple to add some fields to the interpreter that would allow us to also get the line coverage. This would only be done if Octave was built with specific flags. Oliver pointed out that because of vectorized options, line coverage in m file is not as useful as in other languages since the conditions that in other languages is done with if blocks, are instead done by using indexing with an empty array of an array of false elements.<br />
<br />
; measurements of performance<br />
: the test suite is not the best measure of performance. We are estimating that most of its time is spent on running assert which is irrelevant for real Octave programs. It is also mainly cover corner cases and a lot of tests are if it fails when input checking is correct. We should instead have real Octave programs that we used for benchmarking. There wasn't much discussion of this topic beyond noting the problem exists.<br />
<br />
; Octave Forge community<br />
:Currently, there is a high barrier to publish new packages for Octave on Octave-Forge. This mainly comes from the maintenance burden that the Octave Forge Community has with the packages. In particular:<br />
:* The package has to be actively maintained in order to stay compatible with updates to Octave core<br />
:* There is no known good solution to have a Matlab-compatible package, which respects the requirements of an OF package<br />
:* The list of initial requirements (legal and technical) is quite high for outside contributers, especially for domain experts (which we want to address) who are no software engineers<br />
: This creates problems for some external package authors, who basically want to release on their own. Also, this is not resolved by the *two package groups* that we have introduced during the last year.<br />
:<br />
: We see potential for more Octave package publications, which come from “one-off” publications (e. g. with a book / thesis), existing Matlab packages (which also offer a Octave variant), and simple (experimental) libraries of m-files. To increase the pool of high-level users we need to reduce even more the burden to install and distribute packages independently.<br />
:<br />
: The problem that we see today is that Octave-Forge is two-fold: (1) a (collaborative) software development platform and (2) a (re-)distributor of software. So, these new use-cases would not be part of Octave-Forge. In the context of an increasing number of independent “Github developers” this is not needed so much.<br />
:<br />
: To do this we bring back the idea of allowing `pkg` to download and install directly from a url to a `.zip` file or `.tar.gz` file, e.g. `pkg install 'https://myrepo.org/mypackage.zip'`<br />
:* There will be no checks (nor quality standard) on these packages and the user should be clearly warned:<br />
:** Security issue: With no https the download can be redirected. The user can be tricked into entering this command, which downloads and installs (=runs) arbitrary software.<br />
:** Feedback/QA issue: If that package doesn't work, users are probably asking for help.<br />
:* Should `pkg update` also work for these packages?<br />
:** Maybe no. Just re-run the install command.<br />
:** If needed, there could be an update url in the DESCRIPTION file<br />
:* We need to provide guidelines, recommendations and tools for people trying to distribute their packages. We are doing something in this direction, but we need a little boost here: https://octave.sourceforge.io/templates/Makefile, https://sourceforge.net/p/octave/example-package/ci/default/tree/<br />
:* If a package can be installed directly from the repository, it would be supported out-of-the-box by Github, Gitlab, …<br />
:<br />
:Also, we discussed a “package database” like it is done in Julia (see [https://github.com/JuliaLang/METADATA.jl] for a very lightweight solution, which only contains package names, URLs and version), but don't see advantages from that right now.<br />
<br />
; packages into Octave core<br />
: Decided that Octave releases will include some core packages. These will be developed along Octave core, in the same repository, and will be released at the same time. For all purposes they will be a single software project. However, they will still need to be loaded like any other packages.<br />
: Initially, these packages will cover signal processing, statistics, image processing, optimisation, communications, and control. Their aim is to be compatible with their Matlab counterparts and they will be partly imported from the existing Octave Forge packages.<br />
: We won't import all packages in one go. We will start with statistics because we have recently moved a bunch of core functions into it and so they will be easier to import back. signal will probably follow but Pantxo pointed out that this would require a lot of work on its documentation. optim and communications will probably go last since communications is abandoned and optim does not actually have many Matlab compatible functions.<br />
: The current forge packages include extra functions that are not in the Matlab counterparts and their inclusion in the core packages will be decided on a case by case basis. Not sure what will happen with them most likely they would go into a separate package like statistics-legacy.<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked remotely on merging Cristiano Dorigo's improvement of iterative solvers.<br />
<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
<br />
; dinner in town<br />
: That was a very nice time with much discussion about future of Octave and Octave Forge, packages, and makefiles.<br />
<br />
; email maintainers mailing list with conclusions<br />
: done<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; SWAN presentation<br />
: CERN presented their customized Jupyter instance named SWAN which integrates with the other CERN tools for data and data processing.<br />
<br />
; make {{Codeline|--no-gui} default<br />
: Mike http://lists.gnu.org/archive/html/octave-maintainers/2018-03/msg00044.html suggested on the mailing to make this change for the upcoming 4.4 release. We discussed it all together, and everyone agrees. This should make things simpler for everyone. There will be only one flag which will be {{Codeline|--gui}} to start the gui and will be used by launchers. This will simplify the octave code too since we will no longer have to guess whether to start it or not based on whether we have persist or scripts to eval.<br />
<br />
; review our review of code contributions<br />
; build system issues<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
; new release of image package<br />
; more tests to increase code coverage<br />
; CERN visit<br />
; email maintainers mailing list with conclusions<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
; pending discussions and work<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10731OctConf 2018 Notes2018-03-13T22:53:20Z<p>Carandraug: /* Tuesday */ more notes for today</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
: we have questioned the value of this. Most students don't stay after GSoC and most projects do not get merged into core and the packages. Even if it costs us no money, it costs us a lot of time since most students need a lot of hand holding, and it's the whole community that is actually mentoring. Ignoring the students is also not nice to them. Nir is the person responsible and he's not attending this year so we are not deciding anything. However, we need to ensure that students know much, and do a better job at filtering out clueless students.<br />
<br />
; refactoring (threading) / developer docs / symbol naming / liboctave interface stability and usability<br />
: These are all very related issues. We have some issues threading and those are mainly because we don't know how to do things properly. Some of us have learned how since but we don't have that knowledge shared and so it's a bit of lack of documentation for ourselves. We decided that changes to Octave internals, the C++ stuff, will need to include doxygen docs for the things that it changes. We have notes on how to write doxygen docs on our [[C++ style guide#Doxygen|C++ style guide]].<br />
: We also have builds of doxygen docs online, including development version http://octave.org/doxygen/ but they are not up to date. jwe will set his build bots to update the doxygen docs daily.<br />
: We also discussed making available builds of the default branch for users. This would be nice because we get users reporting bugs earlier. However, we are afraid that people will not understand that the latest version is a work in progress, not the latest usable version. So we decided against making such builds available.<br />
<br />
; test coverage<br />
: We can already get the line coverage of our test suite if we run make coverage but that only includes the C++ code. jwe says that it would be simple to add some fields to the interpreter that would allow us to also get the line coverage. This would only be done if Octave was built with specific flags. Oliver pointed out that because of vectorized options, line coverage in m file is not as useful as in other languages since the conditions that in other languages is done with if blocks, are instead done by using indexing with an empty array of an array of false elements.<br />
<br />
; measurements of performance<br />
: the test suite is not the best measure of performance. We are estimating that most of its time is spent on running assert which is irrelevant for real Octave programs. It is also mainly cover corner cases and a lot of tests are if it fails when input checking is correct. We should instead have real Octave programs that we used for benchmarking. There wasn't much discussion of this topic beyond noting the problem exists.<br />
<br />
; Octave Forge community<br />
:Currently, there is a high barrier to publish new packages for Octave on Octave-Forge. This mainly comes from the maintenance burden that the Octave Forge Community has with the packages. In particular:<br />
:* The package has to be actively maintained in order to stay compatible with updates to Octave core<br />
:* There is no known good solution to have a Matlab-compatible package, which respects the requirements of an OF package<br />
:* The list of initial requirements (legal and technical) is quite high for outside contributers, especially for domain experts (which we want to address) who are no software engineers<br />
: This creates problems for some external package authors, who basically want to release on their own. Also, this is not resolved by the *two package groups* that we have introduced during the last year.<br />
:<br />
: We see potential for more Octave package publications, which come from “one-off” publications (e. g. with a book / thesis), existing Matlab packages (which also offer a Octave variant), and simple (experimental) libraries of m-files. To increase the pool of high-level users we need to reduce even more the burden to install and distribute packages independently.<br />
:<br />
: The problem that we see today is that Octave-Forge is two-fold: (1) a (collaborative) software development platform and (2) a (re-)distributor of software. So, these new use-cases would not be part of Octave-Forge. In the context of an increasing number of independent “Github developers” this is not needed so much.<br />
:<br />
: To do this we bring back the idea of allowing `pkg` to download and install directly from a url to a `.zip` file or `.tar.gz` file, e.g. `pkg install 'https://myrepo.org/mypackage.zip'`<br />
:* There will be no checks (nor quality standard) on these packages and the user should be clearly warned:<br />
:** Security issue: With no https the download can be redirected. The user can be tricked into entering this command, which downloads and installs (=runs) arbitrary software.<br />
:** Feedback/QA issue: If that package doesn't work, users are probably asking for help.<br />
:* Should `pkg update` also work for these packages?<br />
:** Maybe no. Just re-run the install command.<br />
:** If needed, there could be an update url in the DESCRIPTION file<br />
:* We need to provide guidelines, recommendations and tools for people trying to distribute their packages. We are doing something in this direction, but we need a little boost here: https://octave.sourceforge.io/templates/Makefile, https://sourceforge.net/p/octave/example-package/ci/default/tree/<br />
:* If a package can be installed directly from the repository, it would be supported out-of-the-box by Github, Gitlab, …<br />
:<br />
:Also, we discussed a “package database” like it is done in Julia (see [https://github.com/JuliaLang/METADATA.jl] for a very lightweight solution, which only contains package names, URLs and version), but don't see advantages from that right now.<br />
<br />
; packages into Octave core<br />
: Decided that Octave releases will include some core packages. These will be developed along Octave core, in the same repository, and will be released at the same time. For all purposes they will be a single software project. However, they will still need to be loaded like any other packages.<br />
: Initially, these packages will cover signal processing, statistics, image processing, optimisation, communications, and control. Their aim is to be compatible with their Matlab counterparts and they will be partly imported from the existing Octave Forge packages.<br />
: We won't import all packages in one go. We will start with statistics because we have recently moved a bunch of core functions into it and so they will be easier to import back. signal will probably follow but Pantxo pointed out that this would require a lot of work on its documentation. optim and communications will probably go last since communications is abandoned and optim does not actually have many Matlab compatible functions.<br />
: The current forge packages include extra functions that are not in the Matlab counterparts and their inclusion in the core packages will be decided on a case by case basis. Not sure what will happen with them most likely they would go into a separate package like statistics-legacy.<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked remotely on merging Cristiano Dorigo's improvement of iterative solvers.<br />
<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
<br />
; dinner in town<br />
: That was a very nice time with much discussion about future of Octave and Octave Forge, packages, and makefiles.<br />
<br />
; email maintainers mailing list with conclusions<br />
: done<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; review our review of code contributions<br />
; build system issues<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
; new release of image package<br />
; more tests to increase code coverage<br />
; CERN visit<br />
; email maintainers mailing list with conclusions<br />
<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
; pending discussions and work<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10725OctConf 2018 Notes2018-03-13T17:33:29Z<p>Carandraug: /* Talking */ indent some doc</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
: we have questioned the value of this. Most students don't stay after GSoC and most projects do not get merged into core and the packages. Even if it costs us no money, it costs us a lot of time since most students need a lot of hand holding, and it's the whole community that is actually mentoring. Ignoring the students is also not nice to them. Nir is the person responsible and he's not attending this year so we are not deciding anything. However, we need to ensure that students know much, and do a better job at filtering out clueless students.<br />
<br />
; refactoring (threading) / developer docs / symbol naming / liboctave interface stability and usability<br />
: These are all very related issues. We have some issues threading and those are mainly because we don't know how to do things properly. Some of us have learned how since but we don't have that knowledge shared and so it's a bit of lack of documentation for ourselves. We decided that changes to Octave internals, the C++ stuff, will need to include doxygen docs for the things that it changes. We have notes on how to write doxygen docs on our [[C++ style guide#Doxygen|C++ style guide]].<br />
: We also have builds of doxygen docs online, including development version http://octave.org/doxygen/ but they are not up to date. jwe will set his build bots to update the doxygen docs daily.<br />
: We also discussed making available builds of the default branch for users. This would be nice because we get users reporting bugs earlier. However, we are afraid that people will not understand that the latest version is a work in progress, not the latest usable version. So we decided against making such builds available.<br />
<br />
; test coverage<br />
; measurements of performance<br />
<br />
; Octave Forge community<br />
:Currently, there is a high barrier to publish new packages for Octave on Octave-Forge. This mainly comes from the maintenance burden that the Octave Forge Community has with the packages. In particular:<br />
:* The package has to be actively maintained in order to stay compatible with updates to Octave core<br />
:* There is no known good solution to have a Matlab-compatible package, which respects the requirements of an OF package<br />
:* The list of initial requirements (legal and technical) is quite high for outside contributers, especially for domain experts (which we want to address) who are no software engineers<br />
: This creates problems for some external package authors, who basically want to release on their own. Also, this is not resolved by the *two package groups* that we have introduced during the last year.<br />
:<br />
: We see potential for more Octave package publications, which come from “one-off” publications (e. g. with a book / thesis), existing Matlab packages (which also offer a Octave variant), and simple (experimental) libraries of m-files. To increase the pool of high-level users we need to reduce even more the burden to install and distribute packages independently.<br />
:<br />
: The problem that we see today is that Octave-Forge is two-fold: (1) a (collaborative) software development platform and (2) a (re-)distributor of software. So, these new use-cases would not be part of Octave-Forge. In the context of an increasing number of independent “Github developers” this is not needed so much.<br />
:<br />
: To do this we bring back the idea of allowing `pkg` to download and install directly from a url to a `.zip` file or `.tar.gz` file, e.g. `pkg install 'https://myrepo.org/mypackage.zip'`<br />
:* There will be no checks (nor quality standard) on these packages and the user should be clearly warned:<br />
:** Security issue: With no https the download can be redirected. The user can be tricked into entering this command, which downloads and installs (=runs) arbitrary software.<br />
:** Feedback/QA issue: If that package doesn't work, users are probably asking for help.<br />
:* Should `pkg update` also work for these packages?<br />
:** Maybe no. Just re-run the install command.<br />
:** If needed, there could be an update url in the DESCRIPTION file<br />
:* We need to provide guidelines, recommendations and tools for people trying to distribute their packages. We are doing something in this direction, but we need a little boost here: https://octave.sourceforge.io/templates/Makefile, https://sourceforge.net/p/octave/example-package/ci/default/tree/<br />
:* If a package can be installed directly from the repository, it would be supported out-of-the-box by Github, Gitlab, …<br />
:<br />
:Also, we discussed a “package database” like it is done in Julia (see [https://github.com/JuliaLang/METADATA.jl] for a very lightweight solution, which only contains package names, URLs and version), but don't see advantages from that right now.<br />
<br />
; packages into Octave core<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked on merging ode45<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
; dinner in town<br />
; email maintainers mailing list with conclusions<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; review our review of code contributions<br />
; build system issues<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
; new release of image package<br />
; more tests to increase code coverage<br />
; CERN visit<br />
; email maintainers mailing list with conclusions<br />
<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
; pending discussions and work<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10721OctConf 2018 Notes2018-03-13T14:31:41Z<p>Carandraug: /* Talking */</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
: we have questioned the value of this. Most students don't stay after GSoC and most projects do not get merged into core and the packages. Even if it costs us no money, it costs us a lot of time since most students need a lot of hand holding, and it's the whole community that is actually mentoring. Ignoring the students is also not nice to them. Nir is the person responsible and he's not attending this year so we are not deciding anything. However, we need to ensure that students know much, and do a better job at filtering out clueless students.<br />
<br />
; refactoring (threading) / developer docs / symbol naming / liboctave interface stability and usability<br />
: These are all very related issues. We have some issues threading and those are mainly because we don't know how to do things properly. Some of us have learned how since but we don't have that knowledge shared and so it's a bit of lack of documentation for ourselves. We decided that changes to Octave internals, the C++ stuff, will need to include doxygen docs for the things that it changes. We have notes on how to write doxygen docs on our [[C++ style guide#Doxygen|C++ style guide]].<br />
: We also have builds of doxygen docs online, including development version http://octave.org/doxygen/ but they are not up to date. jwe will set his build bots to update the doxygen docs daily.<br />
: We also discussed making available builds of the default branch for users. This would be nice because we get users reporting bugs earlier. However, we are afraid that people will not understand that the latest version is a work in progress, not the latest usable version. So we decided against making such builds available.<br />
<br />
; test coverage<br />
; measurements of performance<br />
; Octave Forge community<br />
; packages into Octave core<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked on merging ode45<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
; dinner in town<br />
; email maintainers mailing list with conclusions<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; review our review of code contributions<br />
; build system issues<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
; new release of image package<br />
; more tests to increase code coverage<br />
; CERN visit<br />
; email maintainers mailing list with conclusions<br />
<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
; pending discussions and work<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10720OctConf 2018 Notes2018-03-13T14:07:58Z<p>Carandraug: /* Tuesday */ notes from gsoc</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
: we have questioned the value of this. Most students don't stay after GSoC and most projects do not get merged into core and the packages. Even if it costs us no money, it costs us a lot of time since most students need a lot of hand holding, and it's the whole community that is actually mentoring. Ignoring the students is also not nice to them. Nir is the person responsible and he's not attending this year so we are not deciding anything. However, we need to ensure that students know much, and do a better job at filtering out clueless students.<br />
; refactoring (threading)<br />
; developer docs<br />
; symbol naming<br />
; liboctave interface stability and usability<br />
; test coverage<br />
; measurements of performance<br />
; Octave Forge community<br />
; packages into Octave core<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked on merging ode45<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
; dinner in town<br />
; email maintainers mailing list with conclusions<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; review our review of code contributions<br />
; build system issues<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
; new release of image package<br />
; more tests to increase code coverage<br />
; CERN visit<br />
; email maintainers mailing list with conclusions<br />
<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
; pending discussions and work<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10719OctConf 2018 Notes2018-03-13T13:39:03Z<p>Carandraug: /* Tuesday */ add work done in the morning</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
; refactoring (threading)<br />
; developer docs<br />
; symbol naming<br />
; liboctave interface stability and usability<br />
; test coverage<br />
; measurements of performance<br />
; Octave Forge community<br />
; packages into Octave core<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
: Rik merged Ginesi's special functions and Carlo's worked on merging ode45<br />
; polygon reconstruction algorithm<br />
: Rik and Pantxo worked on this<br />
; new release<br />
: jwe been preparing for wednesday's release<br />
; dinner in town<br />
; email maintainers mailing list with conclusions<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; review our review of code contributions<br />
; build system issues<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
; new release of image package<br />
; more tests to increase code coverage<br />
; CERN visit<br />
; email maintainers mailing list with conclusions<br />
<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
; pending discussions and work<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018_Notes&diff=10714OctConf 2018 Notes2018-03-12T22:42:34Z<p>Carandraug: organise discussion and event by day</p>
<hr />
<div>We will be taking notes as OctConf is going on. Keep an eye on this page.<br />
<br />
== Monday ==<br />
<br />
=== Talking ===<br />
<br />
* jwe presented state of Octave development<br />
* Michele Ginesi presented his Octave work on special functions<br />
<br />
; list topics for discussion and work for this OctConf<br />
: this very page<br />
<br />
; frequency of Octave releases<br />
: a new release from stable this OctConf. A new release from default in 4 weeks time. From now on, new releases every year in January with freeze before the Christmas holidays.<br />
<br />
; implementing String class<br />
: Matlab added double quote strings, which instantiate objects of their new String class. This behaves different from our double quote strings because it does not escape special characters. Being Matlab compatible will mean being backwards incompatible. Decided to first implement the String class and make the Octave internals handle it. Then we will worry about having the double quotes create them and decide about the escaping of characters.<br />
<br />
; scope of functions in script files<br />
: Matlab scripts can now include function definitions. However, these behave different from Octave scripts in two ways:<br />
:# functions defined in script files are locally scoped and will not be available after running the script<br />
:# functions in the script file can de defined in the script after the statements that use them while Octave requires them to be defined first.<br />
: jwe says that this behaviour should be simple to implement but will be backwards incompatible. Solution is to have the run function change and behave like Matlab does. Currently, the function source is the same as run. The function source will keep the old behaviour and can be used to source a file to import functions definitions into the global scope, as if the sourced file had been ran in the interpreter.<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions<br />
: done by carandraug<br />
<br />
<br />
== Tuesday ==<br />
<br />
=== Talking ===<br />
<br />
; future GSoC students<br />
; refactoring (threading)<br />
; developer docs<br />
; symbol naming<br />
; liboctave interface stability and usability<br />
; test coverage<br />
; measurements of performance<br />
; Octave Forge community<br />
; packages into Octave core<br />
<br />
=== Doing ===<br />
<br />
; merging of previous GSoC projects<br />
; polygon reconstruction algorithm<br />
; dinner in town<br />
; email maintainers mailing list with conclusions<br />
<br />
<br />
== Wednesday ==<br />
<br />
=== Talking ===<br />
<br />
; review our review of code contributions<br />
; build system issues<br />
<br />
=== Doing ===<br />
<br />
; new Octave 4.2.2 release<br />
; new release of image package<br />
; more tests to increase code coverage<br />
; CERN visit<br />
; email maintainers mailing list with conclusions<br />
<br />
<br />
== Thursday ==<br />
<br />
=== Talking ===<br />
<br />
; OctConf 2019<br />
; pending discussions and work<br />
<br />
=== Doing ===<br />
<br />
; email maintainers mailing list with conclusions</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2018&diff=10646OctConf 20182018-02-04T17:21:17Z<p>Carandraug: move key data to the top</p>
<hr />
<div>We are happy to announce the upcoming Octave Conference 2018 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 12th until March 15th. <br />
<br />
The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: <br />
* Octave is a fundamental tool of analysis and research for hundreds of CERN scientists<br />
* Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The two-day plus two-half-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond.<br />
<br />
Our [[OctConf_2018#Scientific_committee | scientific committee]] is working out the details of the programme, which will include: a presentation by Octave's creator and main maintainer John W. Eaton in the CERN Main Auditorium (Monday afternoon), several interesting talks about applications of Octave to various scientific domains, code sprints, and a session to promote the open-source supported by public institutions as a model for free and successful development. The call for contributions and abstract will be open soon.<br />
<br />
The key members of the Octave development team will participate in the conference, both from oversea and from Europe. You can find updated information on the programme in this Wiki page and we are filling the [https://indico.cern.ch/event/626097/ Indico] timetable.<br />
<br />
== Key info ==<br />
<br />
=== Dates ===<br />
<br />
The conference will take place on Week 11, from March 12th until March 15th 2018.<br />
<br />
=== Location ===<br />
<br />
Octconf 2018 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research).<br />
<br />
=== Registration ===<br />
<br />
The conference is free to attend but registration is required. Please use the CERN conference manager [https://indico.cern.ch/event/626097/ Indico] to register.<br />
<br />
=== Style ===<br />
<br />
The conference will be based around workshops, unconference, and code sprints, with a plenary speaker on the first three days.<br />
<br />
== Committees ==<br />
=== Scientific committee ===<br />
'''Duties''': Recruit invited speakers, finalize the programme schedule, review and select presentations, review and select posters, chairing during conference. <br />
<br />
'''Members''':<br />
<br />
* [[User:Carandraug|Carnë Draug]]<br />
* Carlo de Falco<br />
* [[User:jwe|John W. Eaton]]<br />
* [[User:JordiGH|Jordi Gutiérrez Hermoso]]<br />
* [[User:KaKiLa|Juan Pablo Carbajal]]<br />
* Rafael Vázquez<br />
<br />
<br />
Use the [mailto:maintainers@octave.org maintainers mailing list] to communicate with these people.<br />
<br />
=== Hosting committtee ===<br />
'''Duties''': Arrange and reserve rooms, catering, social event, and other logistics for the conference.<br />
<br />
'''Members''':<br />
<br />
* Andrea Latina<br />
* John Evans<br />
* Melissa Gaillard<br />
<br />
== Suggestions for Sessions ==<br />
<br />
Approximately half of each day will be devoted to presentations. The remainder will be used for informal discussions, code sprints, etc.<br />
<br />
Please propose session topics in the schedule below. The actual time slot you pick is not important--we can re-arrange the schedule later--but we need to know what topics are of interest.<br />
<br />
In addition, if you have a poster, rather than a full presentation, there is a separate sign-up sheet below.<br />
<br />
=== Schedule ===<br />
During the daytime: CERN offers many areas where people can socialize and/or discuss, informally. For instance, the CERN main restaurant is open until 23:00 (11:00 PM).<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday 12.03<br/>(Opening)</th><br />
<th width="220">Tuesday 13.03<br/>(Tutorials)</th><br />
<th width="250">Wednesday 14.03<br/>(Unconference)</th><br />
<th width="220">Thursday 15.03<br/>(Closing)</th><br />
</tr><br />
<tr><br />
<td><br/><br/>Morning<br/><br/></td><br />
<td bgcolor= #ffb3b3></td><br />
<td> Hands-on activities </td><br />
<td> Unconference </td><br />
<td> OctConf 2019 planning and Closing </td><br />
</tr><br />
<tr><br />
<td><br/><br/>Noon<br/><br/> </td><br />
<td> Plenary talk <br/> and Lunch </td><br />
<td> Plenary talk <br/> and Lunch </td><br />
<td> Plenary talk <br/> and Lunch </td><br />
<td> Farewell lunch</td><br />
</tr><br />
<tr><br />
<td rowspan=2><br/><br/>Afternoon<br/><br/></td><br />
<td> Unconference </td><br />
<td rowspan=2> Hands on Tutorials </td><br />
<td rowspan=2> Visit to CERN </td><br />
<td bgcolor=#ffb3b3 rowspan=3></td><br />
</tr><br />
<td> Hands-on activities </td><br />
<tr><br />
<td><br/><br/>Evening<br/><br/></td><br />
<td> </td><br />
<td> Social event </td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
=== Poster Session ===<br />
<br />
If you have a poster demonstrating how you use Octave to address an application in your field please add your name and poster topic to the list below. We will schedule an appropriately sized space based on the number of posters.<br />
<br />
Confirmed Posters:<br />
<br />
<table class="tg" border="0" width="600" style="text-align: left"><br />
<tr><br />
<th width="400">Title</th><br />
<th width="200">Author</th><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You can try your luck and search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
=== Travelling ===<br />
The information below is taken from [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
Please check that link for further details.<br />
<br />
[http://visit.cern/sites/visits.web.cern.ch/files/files/exhibitions/access-map.pdf How to get to CERN infographics]<br />
<br />
CERN Reception - Meyrin<br />
<br />
CERN - European Organization for Nuclear Research<br />
385 route de Meyrin<br />
CH-1217 Meyrin - Geneva<br />
Switzerland<br />
<br />
* GPS Coordinates<br />
Latitude: 46.2314284<br />
<br />
Longitude: 6.0539718<br />
<br />
<br />
==== By train ====<br />
Coming from the Geneva railway station at Cornavin<br />
<br />
Tram - Take the number 18 tram to "CERN" which is the final stop at the CERN entrance.<br />
<br />
Ticket costs 3 CHF full-fare / 2 CHF reduced-fare (Ticket "Tout Genève" on the ticket machine). <br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
==== By plane ====<br />
Coming from the Geneva International Airport at Cointrin<br />
<br />
Taxi - approximately 35CHF.<br />
<br />
Bus - First take a public transport ticket from the machine you will find at the exit to the baggage collection hall, just before customs control. Then:<br />
<br />
Option 1: Take bus Y direction "CERN" and get off at the CERN stop opposite the large Globe and the CERN site.<br />
<br />
Option 2: Take bus 23, 28 or 57 and get off at the stop "Blandonnet" and then catch the Tram number 18, final stop "CERN".<br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
==== By car ====<br />
<br />
* From Switzerland<br />
<br />
Follow signs for "Aéroport", "Lyon" and "Meyrin".<br />
<br />
Once you are in Meyrin, follow signs for "St. Genis" (which is just beyond the border, in France). <br />
<br />
Before reaching St Genis, the CERN site is on your left on "Route de Meyrin", just before you reach the border.<br />
<br />
* From France (département of Ain)<br />
<br />
Follow signs for "Gex" or "St. Genis". <br />
When you reach the border, CERN is on your right immediately after passing through customs.<br />
<br />
See [http://visit.cern/exhibitions/how-get-cern-car Parking] for parking information.<br />
<br />
== Tips and tricks ==<br />
* A normal lunch at CERN costs about 15 CHF, inclusive of one coffee and one delicious dessert.<br />
* You can pay with CHF and EUR in CERN (the drawback is always CHF) and most of stores and restaurants in Geneva<br />
* The AC power plugs you'll find at CERN are SEV_1011 (https://en.wikipedia.org/wiki/AC_power_plugs_and_sockets#Swiss_SEV_1011). You can borrow one adaptor at the hostel reception.<br />
* As guest you can only enter and exit the main CERN area through entrance B<br />
* A bus ride from the airport to CERN is free of charge, if you take a ticket at the vending machine in the baggage claim area. Should you miss that vending machine, a ticket will cost you 3.00 CHF. https://genevalunch.com/guides/travel/the-cheerful-traveler-geneva-airport-public-transport/<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2017]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2019]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2018]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Octave_for_Debian_systems&diff=10618Octave for Debian systems2018-01-12T08:24:13Z<p>Carandraug: note that cloning the repository is for development versions</p>
<hr />
<div>For Debian, and Debian-based distributions such as Ubuntu, specific solutions.<br />
<br />
== Pre-compiled binaries ==<br />
<br />
Binary packages for Octave and many Octave-Forge packages are provided by all versions of Debian and Ubuntu. These are the most well-tested binaries available and should work best for most users.<br />
<br />
sudo apt-get install octave<br />
<br />
Aside the {{codeline|octave}} package that installs GNU Octave, other pieces of it are split over multiple packages. These are {{codeline|octave-doc}}, {{codeline|octave-info}}, and {{codeline|octave-htmldoc}} for the documentation; {{codeline|liboctave-dev}} for the octave development header files and mkoctfile (required to install Octave Forge packages); and {{codeline|octave-dbg}} for the debugging symbols.<br />
<br />
For Debian stable users, there may also be newer packages available in backports, so don't forget to check there.<br />
<br />
=== Octave packages ===<br />
<br />
Many Octave packages are also distributed by your Linux distribution. These are tested to work the best with your Octave version. For example:<br />
<br />
sudo apt-get install octave-control octave-image octave-io octave-optim octave-signal octave-statistics<br />
<br />
=== Octave's Personal Package Archive (PPA) for Ubuntu ===<br />
<br />
For some Ubuntu releases the Octave packages are too old (Ubuntu 12.04 only has Octave version 3.2). The [https://launchpad.net/~octave GNU Octave Team] on Launchpad maintains a PPA providing more up to date packages of Octave for all versions of Ubuntu. These are backported from Debian unstable (the Ubuntu Octave Team needs help testing and preparing the packages so if you can help with this, contact [[User:Mtmiller|Mike Miller]]). To set up your system to install these packages:<br />
<br />
sudo apt-add-repository ppa:octave/stable<br />
sudo apt-get update<br />
sudo apt-get install octave<br />
<br />
=== Linuxbrew ===<br />
<br />
It is possible to install the current stable version of Octave and any needed dependencies within your home directory, particularly useful if you have an old Linux distribution or do not have root access, using [http://linuxbrew.sh Linuxbrew]:<br />
<br />
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"<br />
echo 'export PATH="$HOME/.linuxbrew/bin:$PATH"' >>~/.bash_profile<br />
brew install homebrew/science/octave<br />
<br />
== Compiling from source ==<br />
<br />
The ''only'' tricky part is to install the dependencies. Once that is solved, installing from source should be as easy as {{Codeline|./configure && make && make install}}. See the manual for [http://www.gnu.org/software/octave/doc/interpreter/Running-Configure-and-Make.html configure options] and [[Octave_for_Debian_systems#Configuration|below]] for some common examples.<br />
<br />
=== Install dependencies ===<br />
<br />
Note that different Debian and Ubuntu versions may have slightly different package names but their differences should be pretty small, mostly limited to version numbers.<br />
<br />
==== The easy way (but likely incorrect) ====<br />
<br />
This approach is ''only'' suitable if you are building from source the ''same'' version that your Linux distribution already has packaged.<br />
<br />
The easy way to install ''most'' of the necessary dependencies is to {{Codeline|sudo apt-get build-dep octave}}. This will install all packages necessary to build and prepare a Debian package for the octave version available on your system repositories. However:<br />
* will install unnecessary packages related to the building of a Debian package;<br />
* may miss some new dependencies;<br />
* may install packages that are no longer octave dependencies.<br />
<br />
==== The even easier way (but experimental) ====<br />
<br />
The [[MXE|MXE-octave]] package provides a way to compile Octave for different platforms. Dependencies and certain flags are handled automatically.<br />
<br />
==== The right way ====<br />
<br />
The right way is to select and install all the dependencies as listed in the {{Path|INSTALL.OCTAVE}} file (if it is not in your source tree build it doing <code>make INSTALL.OCTAVE</code>). The following are their package names in Debian repositories (they will have their own dependencies which your package manager will solve automatically). If you are building development versions, you'll require some more packages as listed on {{Path|etc/HACKING}} and {{Path|INSTALL}}. Many of them will already be installed on your system. Install the dependencies by typing<br />
<br />
sudo apt-get install<br />
<br />
followed by the package names of the table below.<br />
<br />
:{| class="wikitable"<br />
|-<br />
! Dependency !! Debian 8 Jessie (stable) !! Ubuntu 16.04 Xenial Xerus (LTS)<br />
|-<br />
!colspan="3" style="text-align:center;" | Required build tools<br />
|-<br />
| C compiler<br />
|| [https://packages.debian.org/jessie/gcc gcc]<br />
|| [http://packages.ubuntu.com/xenial/gcc gcc]<br />
|-<br />
| C++ compiler<br />
|| [https://packages.debian.org/jessie/g++ g++]<br />
|| [http://packages.ubuntu.com/xenial/g++ g++]<br />
|-<br />
| Fortran compiler<br />
|| [https://packages.debian.org/jessie/gfortran gfortran]<br />
|| [http://packages.ubuntu.com/xenial/gfortran gfortran]<br />
|-<br />
| GNU make<br />
|| [https://packages.debian.org/jessie/make make]<br />
|| [http://packages.ubuntu.com/xenial/make make]<br />
|-<br />
!colspan="3" style="text-align:center;"| Required external packages<br />
|-<br />
| BLAS<br />
|| [https://packages.debian.org/jessie/libblas-dev libblas-dev]<br />
|| [http://packages.ubuntu.com/xenial/libblas-dev libblas-dev]<br />
|-<br />
| LAPACK<br />
|| [https://packages.debian.org/jessie/liblapack-dev liblapack-dev]<br />
|| [http://packages.ubuntu.com/xenial/liblapack-dev liblapack-dev]<br />
|-<br />
| PCRE<br />
|| [https://packages.debian.org/jessie/libpcre3-dev libpcre3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libpcre3-dev libpcre3-dev]<br />
|-<br />
!colspan="3" style="text-align:center;"| ''Strongly'' recommended. Check the [http://www.gnu.org/software/octave/doc/interpreter/External-Packages.html Octave manual] for more information.<br />
|-<br />
| ARPACK<br />
|| [https://packages.debian.org/jessie/libarpack2-dev libarpack2-dev]<br />
|| [http://packages.ubuntu.com/xenial/libarpack2-dev libarpack2-dev]<br />
|-<br />
| cURL<br />
|| [https://packages.debian.org/jessie/libcurl4-gnutls-dev libcurl4-gnutls-dev]<br />
|| [http://packages.ubuntu.com/xenial/libcurl4-gnutls-dev libcurl4-gnutls-dev]<br />
|-<br />
| epstool<br />
|| [https://packages.debian.org/jessie/epstool epstool]<br />
|| [http://packages.ubuntu.com/xenial/epstool epstool]<br />
|-<br />
| FFTW3<br />
|| [https://packages.debian.org/jessie/libfftw3-dev libfftw3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfftw3-dev libfftw3-dev]<br />
|-<br />
| fig2dev<br />
|| [https://packages.debian.org/jessie/transfig transfig]<br />
|| [http://packages.ubuntu.com/xenial/transfig transfig]<br />
|-<br />
| FLTK<br />
|| [https://packages.debian.org/jessie/libfltk1.3-dev libfltk1.3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfltk1.3-dev libfltk1.3-dev]<br />
|-<br />
| fontconfig<br />
|| [https://packages.debian.org/jessie/libfontconfig1-dev libfontconfig1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfontconfig1-dev libfontconfig1-dev]<br />
|-<br />
| FreeType<br />
|| [https://packages.debian.org/jessie/libfreetype6-dev libfreetype6-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfreetype6-dev libfreetype6-dev]<br />
|-<br />
| gl2ps<br />
|| [https://packages.debian.org/jessie/libgl2ps-dev libgl2ps-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgl2ps-dev libgl2ps-dev]<br />
|-<br />
| GLPK<br />
|| [https://packages.debian.org/jessie/libglpk-dev libglpk-dev]<br />
|| [http://packages.ubuntu.com/xenial/libglpk-dev libglpk-dev]<br />
|-<br />
| GNU Readline<br />
|| [https://packages.debian.org/jessie/libreadline-dev libreadline-dev]<br />
|| [http://packages.ubuntu.com/xenial/libreadline-dev libreadline-dev]<br />
|-<br />
| gnuplot<br />
|| [https://packages.debian.org/jessie/gnuplot gnuplot]<br />
|| [http://packages.ubuntu.com/xenial/gnuplot gnuplot-x11]<br />
|-<br />
| GraphicsMagick++<br />
|| [https://packages.debian.org/jessie/libgraphicsmagick++1-dev libgraphicsmagick++1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgraphicsmagick++1-dev libgraphicsmagick++1-dev]<br />
|-<br />
| HDF5<br />
|| [https://packages.debian.org/jessie/libhdf5-serial-dev libhdf5-serial-dev]<br />
|| [http://packages.ubuntu.com/xenial/libhdf5-serial-dev libhdf5-serial-dev]<br />
|-<br />
| Java JDK<br />
|| [https://packages.debian.org/jessie/openjdk-7-jdk openjdk-7-jdk]<br />
|| [http://packages.ubuntu.com/xenial/openjdk-8-jdk openjdk-8-jdk]<br />
|-<br />
| libsndfile<br />
|| [https://packages.debian.org/jessie/libsndfile1-dev libsndfile1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libsndfile1-dev libsndfile1-dev]<br />
|-<br />
| LLVM<br />
|| [https://packages.debian.org/jessie/llvm-dev llvm-dev]<br />
|| [http://packages.ubuntu.com/xenial/llvm-dev llvm-dev]<br />
|-<br />
| lpr<br />
|| [https://packages.debian.org/jessie/lpr lpr]<br />
|| [http://packages.ubuntu.com/xenial/lpr lpr]<br />
|-<br />
| makeinfo<br />
|| [https://packages.debian.org/jessie/texinfo texinfo]<br />
|| [http://packages.ubuntu.com/xenial/texinfo texinfo]<br />
|-<br />
| OpenGL<br />
|| [https://packages.debian.org/jessie/libgl1-mesa-dev libgl1-mesa-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgl1-mesa-dev libgl1-mesa-dev]<br />
|-<br />
| OSMesa<br />
|| [https://packages.debian.org/jessie/libosmesa6-dev libosmesa6-dev]<br />
|| [http://packages.ubuntu.com/xenial/libosmesa6-dev libosmesa6-dev]<br />
|-<br />
| pstoedit<br />
|| [https://packages.debian.org/jessie/pstoedit pstoedit]<br />
|| [http://packages.ubuntu.com/xenial/pstoedit pstoedit]<br />
|-<br />
| PortAudio<br />
|| [https://packages.debian.org/jessie/portaudio19-dev portaudio19-dev]<br />
|| [http://packages.ubuntu.com/xenial/portaudio19-dev portaudio19-dev]<br />
|-<br />
| Qhull<br />
|| [https://packages.debian.org/jessie/libqhull-dev libqhull-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqhull-dev libqhull-dev]<br />
|-<br />
| QRUPDATE<br />
|| [https://packages.debian.org/jessie/libqrupdate-dev libqrupdate-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqrupdate-dev libqrupdate-dev]<br />
|-<br />
| QScintilla<br />
|| [https://packages.debian.org/jessie/libqscintilla2-dev libqscintilla2-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqscintilla2-dev libqscintilla2-dev]<br />
|-<br />
| Qt<br />
||<br />
[https://packages.debian.org/jessie/libqt4-dev libqt4-dev]<br />
[https://packages.debian.org/jessie/libqtcore4 libqtcore4]<br />
[https://packages.debian.org/jessie/libqtwebkit4 libqtwebkit4]<br />
[https://packages.debian.org/jessie/libqt4-network libqt4-network]<br />
[https://packages.debian.org/jessie/libqtgui4 libqtgui4]<br />
[https://packages.debian.org/jessie/libqt4-opengl-dev libqt4-opengl-dev]<br />
||<br />
[http://packages.ubuntu.com/xenial/libqt4-dev libqt4-dev]<br />
[http://packages.ubuntu.com/xenial/libqtcore4 libqtcore4]<br />
[http://packages.ubuntu.com/xenial/libqtwebkit4 libqtwebkit4]<br />
[http://packages.ubuntu.com/xenial/libqt4-network libqt4-network]<br />
[http://packages.ubuntu.com/xenial/libqtgui4 libqtgui4]<br />
[http://packages.ubuntu.com/xenial/libqt4-opengl-dev libqt4-opengl-dev]<br />
|-<br />
| SuiteSparse<br />
|| [https://packages.debian.org/jessie/libsuitesparse-dev libsuitesparse-dev]<br />
|| [http://packages.ubuntu.com/xenial/libsuitesparse-dev libsuitesparse-dev]<br />
|-<br />
| Texlive<br />
|| texlive<br />
|| texlive<br />
|-<br />
| Xft<br />
|| [https://packages.debian.org/jessie/libxft-dev libxft-dev]<br />
|| [http://packages.ubuntu.com/xenial3/libxft-dev libxft-dev]<br />
|-<br />
| zlib<br />
|| [https://packages.debian.org/jessie/zlib1g-dev zlib1g-dev]<br />
|| [http://packages.ubuntu.com/xenial/zlib1g-dev zlib1g-dev]<br />
|-<br />
!colspan="3" style="text-align:center;"| Required to build from development sources<br />
|-<br />
| Autoconf<br />
|| [https://packages.debian.org/jessie/autoconf autoconf]<br />
|| [http://packages.ubuntu.com/xenial/autoconf autoconf]<br />
|-<br />
| Automake<br />
|| [https://packages.debian.org/jessie/automake automake]<br />
|| [http://packages.ubuntu.com/xenial/automake automake]<br />
|-<br />
| Bison<br />
|| [https://packages.debian.org/jessie/bison bison]<br />
|| [http://packages.ubuntu.com/xenial/bison bison]<br />
|-<br />
| Flex<br />
|| [https://packages.debian.org/jessie/flex flex]<br />
|| [http://packages.ubuntu.com/xenial/flex flex]<br />
|-<br />
| gperf<br />
|| [https://packages.debian.org/jessie/gperf gperf]<br />
|| [http://packages.ubuntu.com/xenial/gperf gperf]<br />
|-<br />
| gzip<br />
|| [https://packages.debian.org/jessie/gzip gzip]<br />
|| [http://packages.ubuntu.com/xenial/gzip gzip]<br />
|-<br />
| icoutils<br />
|| [https://packages.debian.org/jessie/icoutils icoutils]<br />
|| [http://packages.ubuntu.com/xenial/icoutils icoutils]<br />
|-<br />
| rsvg-convert<br />
|| [https://packages.debian.org/jessie/librsvg2-bin librsvg2-bin]<br />
|| [http://packages.ubuntu.com/xenial/librsvg2-bin librsvg2-bin]<br />
|-<br />
| libtool<br />
|| [https://packages.debian.org/jessie/libtool libtool]<br />
|| [http://packages.ubuntu.com/xenial/libtool libtool]<br />
|-<br />
| perl<br />
|| [https://packages.debian.org/jessie/perl perl]<br />
|| [http://packages.ubuntu.com/xenial/perl perl]<br />
|-<br />
| rsync<br />
|| [https://packages.debian.org/jessie/rsync rsync]<br />
|| [http://packages.ubuntu.com/xenial/rsync rsync]<br />
|-<br />
| tar<br />
|| [https://packages.debian.org/jessie/tar tar]<br />
|| [http://packages.ubuntu.com/xenial/tar tar]<br />
|}<br />
<br />
To install all of these on Ubuntu 16.04, type<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
or, for Debian 8 stable,<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-7-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
or, for Debian 9 stable,<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libjack-jackd2-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
<br />
{{Warning|<ul><li>The Debian repositoriy has several libraries for dealing with HDF data files. The recommended is {{Codeline|libhdf5-serial-dev}}. However, the {{Forge|msh|msh package}} requires [http://www.geuz.org/gmsh/ gmsh] which is incompatible with it.</li><br />
<li>The GraphicsMagick++ library (libgraphicsmagick++1-dev) on the Debian repositories was compiled with quantum 8 which limits reading images to 8 bit. The solution is to recompile [[GraphicsMagick]] with quantum 16 or 32 before building Octave.</li><br />
<li>For debian9 using openjdk-9-jdk (even providing {{Codeline|JAVA_HOME}}) could *not* be used for the java interface! Use openjdk-8-jdk instead.</li><br />
<li>When configure decides to use QT5 instead of QT4, make might fail because lrelease is missing (see [https://savannah.gnu.org/bugs/?50580 bug 50580]). It can be fixed by installing {{Codeline|qttools5-dev-tools}}</li><br />
</ul>}}<br />
<br />
=== Obtaining the Source ===<br />
<br />
The source code for Octave releases can be obtained as a tarball from [https://ftp.gnu.org/gnu/octave/ https://ftp.gnu.org/gnu/octave/]. The source code for development versions is available by cloning the [[Mercurial|mercurial repository]].<br />
<br />
=== Bootstrap ===<br />
<br />
If you are building development versions instead of an actual Octave release, you will need to run the {{Codeline|./bootstrap}} script.<br />
<br />
=== Configuration ===<br />
<br />
As mentioned above, Octave can be compiled with the default settings using {{Codeline|./configure && make && make install}}. You can also tweak the setup using configure options. Some examples are given below for a Linux system.<br />
<br />
==== 64 bit ====<br />
<br />
To get [https://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html 64-bit] indexing requires all linked libraries to support 64-bit variables. You can omit most of these except BLAS which gives a fatal error. This is remedied by compiling [http://www.openblas.net/ OpenBLAS] with edits to its Makefile.rule so that BINARY=64 INTERFACE64=1.<br />
<br />
<code>./configure LD_LIBRARY_PATH=/opt/OpenBLAS/lib CPPFLAGS=-I/opt/OpenBLAS/include LDFLAGS=-L/opt/OpenBLAS/lib --enable-64</code><br />
<br />
==== Java ====<br />
<br />
Autodetection for java should work well on Debian-based systems. A specific Java version can be specified by passing {{codeline|JAVA_HOME}} to configure, for example<br />
<br />
./configure JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
==== HDF5 ====<br />
<br />
On current versions of Debian and Ubuntu, you may get the following warning when building an older version of Octave from source:<br />
<br />
HDF5 library not found. Octave will not be able to save or load HDF5 data files.<br />
<br />
The problem is that there are multiple versions of the hdf5 package. Octave was written with the serial version in mind but it is likely to work with the others (OpenMPI and Mpich). Due to the naming scheme done in Debian, it may be required to specify the location of the libraries. See bug {{bug|38928}} for details (starting with comment #19) but basically, use the following when running configure:<br />
<br />
./configure --with-hdf5-includedir=/usr/include/hdf5/serial --with-hdf5-libdir=/usr/lib/x86_64-linux-gnu/hdf5/serial<br />
<br />
On older versions of Debian and Ubuntu, where only one flavor of the HDF5 library could be installed at a time, you may need to build Octave against one of the MPI-enabled flavors. On these older systems, configuring Octave like this may work:<br />
<br />
./configure CPPFLAGS="-I/usr/include/mpi -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX"<br />
<br />
[[Category:Building]]<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Octave_for_Debian_systems&diff=10602Octave for Debian systems2018-01-09T15:35:00Z<p>Carandraug: Reverted edits by 208.185.237.18 (talk) to last revision by 87.163.179.198</p>
<hr />
<div>For Debian, and Debian-based distributions such as Ubuntu, specific solutions.<br />
<br />
== Pre-compiled binaries ==<br />
<br />
Binary packages for Octave and many Octave-Forge packages are provided by all versions of Debian and Ubuntu. These are the most well-tested binaries available and should work best for most users.<br />
<br />
sudo apt-get install octave<br />
<br />
Aside the {{codeline|octave}} package that installs GNU Octave, other pieces of it are split over multiple packages. These are {{codeline|octave-doc}}, {{codeline|octave-info}}, and {{codeline|octave-htmldoc}} for the documentation; {{codeline|liboctave-dev}} for the octave development header files and mkoctfile (required to install Octave Forge packages); and {{codeline|octave-dbg}} for the debugging symbols.<br />
<br />
For Debian stable users, there may also be newer packages available in backports, so don't forget to check there.<br />
<br />
=== Octave packages ===<br />
<br />
Many Octave packages are also distributed by your Linux distribution. These are tested to work the best with your Octave version. For example:<br />
<br />
sudo apt-get install octave-control octave-image octave-io octave-optim octave-signal octave-statistics<br />
<br />
=== Octave's Personal Package Archive (PPA) for Ubuntu ===<br />
<br />
For some Ubuntu releases the Octave packages are too old (Ubuntu 12.04 only has Octave version 3.2). The [https://launchpad.net/~octave GNU Octave Team] on Launchpad maintains a PPA providing more up to date packages of Octave for all versions of Ubuntu. These are backported from Debian unstable (the Ubuntu Octave Team needs help testing and preparing the packages so if you can help with this, contact [[User:Mtmiller|Mike Miller]]). To set up your system to install these packages:<br />
<br />
sudo apt-add-repository ppa:octave/stable<br />
sudo apt-get update<br />
sudo apt-get install octave<br />
<br />
=== Linuxbrew ===<br />
<br />
It is possible to install the current stable version of Octave and any needed dependencies within your home directory, particularly useful if you have an old Linux distribution or do not have root access, using [http://linuxbrew.sh Linuxbrew]:<br />
<br />
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"<br />
echo 'export PATH="$HOME/.linuxbrew/bin:$PATH"' >>~/.bash_profile<br />
brew install homebrew/science/octave<br />
<br />
== Compiling from source ==<br />
<br />
The ''only'' tricky part is to install the dependencies. Once that is solved, installing from source should be as easy as {{Codeline|./configure && make && make install}}. See the manual for [http://www.gnu.org/software/octave/doc/interpreter/Running-Configure-and-Make.html configure options] and [[Octave_for_Debian_systems#Configuration|below]] for some common examples.<br />
<br />
=== Install dependencies ===<br />
<br />
Note that different Debian and Ubuntu versions may have slightly different package names but their differences should be pretty small, mostly limited to version numbers.<br />
<br />
==== The easy way (but likely incorrect) ====<br />
<br />
This approach is ''only'' suitable if you are building from source the ''same'' version that your Linux distribution already has packaged.<br />
<br />
The easy way to install ''most'' of the necessary dependencies is to {{Codeline|sudo apt-get build-dep octave}}. This will install all packages necessary to build and prepare a Debian package for the octave version available on your system repositories. However:<br />
* will install unnecessary packages related to the building of a Debian package;<br />
* may miss some new dependencies;<br />
* may install packages that are no longer octave dependencies.<br />
<br />
==== The even easier way (but experimental) ====<br />
<br />
The [[MXE|MXE-octave]] package provides a way to compile Octave for different platforms. Dependencies and certain flags are handled automatically.<br />
<br />
==== The right way ====<br />
<br />
The right way is to select and install all the dependencies as listed in the {{Path|INSTALL.OCTAVE}} file (if it is not in your source tree build it doing <code>make INSTALL.OCTAVE</code>). The following are their package names in Debian repositories (they will have their own dependencies which your package manager will solve automatically). If you are building development versions, you'll require some more packages as listed on {{Path|etc/HACKING}} and {{Path|INSTALL}}. Many of them will already be installed on your system. Install the dependencies by typing<br />
<br />
sudo apt-get install<br />
<br />
followed by the package names of the table below.<br />
<br />
:{| class="wikitable"<br />
|-<br />
! Dependency !! Debian 8 Jessie (stable) !! Ubuntu 16.04 Xenial Xerus (LTS)<br />
|-<br />
!colspan="3" style="text-align:center;" | Required build tools<br />
|-<br />
| C compiler<br />
|| [https://packages.debian.org/jessie/gcc gcc]<br />
|| [http://packages.ubuntu.com/xenial/gcc gcc]<br />
|-<br />
| C++ compiler<br />
|| [https://packages.debian.org/jessie/g++ g++]<br />
|| [http://packages.ubuntu.com/xenial/g++ g++]<br />
|-<br />
| Fortran compiler<br />
|| [https://packages.debian.org/jessie/gfortran gfortran]<br />
|| [http://packages.ubuntu.com/xenial/gfortran gfortran]<br />
|-<br />
| GNU make<br />
|| [https://packages.debian.org/jessie/make make]<br />
|| [http://packages.ubuntu.com/xenial/make make]<br />
|-<br />
!colspan="3" style="text-align:center;"| Required external packages<br />
|-<br />
| BLAS<br />
|| [https://packages.debian.org/jessie/libblas-dev libblas-dev]<br />
|| [http://packages.ubuntu.com/xenial/libblas-dev libblas-dev]<br />
|-<br />
| LAPACK<br />
|| [https://packages.debian.org/jessie/liblapack-dev liblapack-dev]<br />
|| [http://packages.ubuntu.com/xenial/liblapack-dev liblapack-dev]<br />
|-<br />
| PCRE<br />
|| [https://packages.debian.org/jessie/libpcre3-dev libpcre3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libpcre3-dev libpcre3-dev]<br />
|-<br />
!colspan="3" style="text-align:center;"| ''Strongly'' recommended. Check the [http://www.gnu.org/software/octave/doc/interpreter/External-Packages.html Octave manual] for more information.<br />
|-<br />
| ARPACK<br />
|| [https://packages.debian.org/jessie/libarpack2-dev libarpack2-dev]<br />
|| [http://packages.ubuntu.com/xenial/libarpack2-dev libarpack2-dev]<br />
|-<br />
| cURL<br />
|| [https://packages.debian.org/jessie/libcurl4-gnutls-dev libcurl4-gnutls-dev]<br />
|| [http://packages.ubuntu.com/xenial/libcurl4-gnutls-dev libcurl4-gnutls-dev]<br />
|-<br />
| epstool<br />
|| [https://packages.debian.org/jessie/epstool epstool]<br />
|| [http://packages.ubuntu.com/xenial/epstool epstool]<br />
|-<br />
| FFTW3<br />
|| [https://packages.debian.org/jessie/libfftw3-dev libfftw3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfftw3-dev libfftw3-dev]<br />
|-<br />
| fig2dev<br />
|| [https://packages.debian.org/jessie/transfig transfig]<br />
|| [http://packages.ubuntu.com/xenial/transfig transfig]<br />
|-<br />
| FLTK<br />
|| [https://packages.debian.org/jessie/libfltk1.3-dev libfltk1.3-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfltk1.3-dev libfltk1.3-dev]<br />
|-<br />
| fontconfig<br />
|| [https://packages.debian.org/jessie/libfontconfig1-dev libfontconfig1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfontconfig1-dev libfontconfig1-dev]<br />
|-<br />
| FreeType<br />
|| [https://packages.debian.org/jessie/libfreetype6-dev libfreetype6-dev]<br />
|| [http://packages.ubuntu.com/xenial/libfreetype6-dev libfreetype6-dev]<br />
|-<br />
| gl2ps<br />
|| [https://packages.debian.org/jessie/libgl2ps-dev libgl2ps-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgl2ps-dev libgl2ps-dev]<br />
|-<br />
| GLPK<br />
|| [https://packages.debian.org/jessie/libglpk-dev libglpk-dev]<br />
|| [http://packages.ubuntu.com/xenial/libglpk-dev libglpk-dev]<br />
|-<br />
| GNU Readline<br />
|| [https://packages.debian.org/jessie/libreadline-dev libreadline-dev]<br />
|| [http://packages.ubuntu.com/xenial/libreadline-dev libreadline-dev]<br />
|-<br />
| gnuplot<br />
|| [https://packages.debian.org/jessie/gnuplot gnuplot]<br />
|| [http://packages.ubuntu.com/xenial/gnuplot gnuplot-x11]<br />
|-<br />
| GraphicsMagick++<br />
|| [https://packages.debian.org/jessie/libgraphicsmagick++1-dev libgraphicsmagick++1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgraphicsmagick++1-dev libgraphicsmagick++1-dev]<br />
|-<br />
| HDF5<br />
|| [https://packages.debian.org/jessie/libhdf5-serial-dev libhdf5-serial-dev]<br />
|| [http://packages.ubuntu.com/xenial/libhdf5-serial-dev libhdf5-serial-dev]<br />
|-<br />
| Java JDK<br />
|| [https://packages.debian.org/jessie/openjdk-7-jdk openjdk-7-jdk]<br />
|| [http://packages.ubuntu.com/xenial/openjdk-8-jdk openjdk-8-jdk]<br />
|-<br />
| libsndfile<br />
|| [https://packages.debian.org/jessie/libsndfile1-dev libsndfile1-dev]<br />
|| [http://packages.ubuntu.com/xenial/libsndfile1-dev libsndfile1-dev]<br />
|-<br />
| LLVM<br />
|| [https://packages.debian.org/jessie/llvm-dev llvm-dev]<br />
|| [http://packages.ubuntu.com/xenial/llvm-dev llvm-dev]<br />
|-<br />
| lpr<br />
|| [https://packages.debian.org/jessie/lpr lpr]<br />
|| [http://packages.ubuntu.com/xenial/lpr lpr]<br />
|-<br />
| makeinfo<br />
|| [https://packages.debian.org/jessie/texinfo texinfo]<br />
|| [http://packages.ubuntu.com/xenial/texinfo texinfo]<br />
|-<br />
| OpenGL<br />
|| [https://packages.debian.org/jessie/libgl1-mesa-dev libgl1-mesa-dev]<br />
|| [http://packages.ubuntu.com/xenial/libgl1-mesa-dev libgl1-mesa-dev]<br />
|-<br />
| OSMesa<br />
|| [https://packages.debian.org/jessie/libosmesa6-dev libosmesa6-dev]<br />
|| [http://packages.ubuntu.com/xenial/libosmesa6-dev libosmesa6-dev]<br />
|-<br />
| pstoedit<br />
|| [https://packages.debian.org/jessie/pstoedit pstoedit]<br />
|| [http://packages.ubuntu.com/xenial/pstoedit pstoedit]<br />
|-<br />
| PortAudio<br />
|| [https://packages.debian.org/jessie/portaudio19-dev portaudio19-dev]<br />
|| [http://packages.ubuntu.com/xenial/portaudio19-dev portaudio19-dev]<br />
|-<br />
| Qhull<br />
|| [https://packages.debian.org/jessie/libqhull-dev libqhull-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqhull-dev libqhull-dev]<br />
|-<br />
| QRUPDATE<br />
|| [https://packages.debian.org/jessie/libqrupdate-dev libqrupdate-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqrupdate-dev libqrupdate-dev]<br />
|-<br />
| QScintilla<br />
|| [https://packages.debian.org/jessie/libqscintilla2-dev libqscintilla2-dev]<br />
|| [http://packages.ubuntu.com/xenial/libqscintilla2-dev libqscintilla2-dev]<br />
|-<br />
| Qt<br />
||<br />
[https://packages.debian.org/jessie/libqt4-dev libqt4-dev]<br />
[https://packages.debian.org/jessie/libqtcore4 libqtcore4]<br />
[https://packages.debian.org/jessie/libqtwebkit4 libqtwebkit4]<br />
[https://packages.debian.org/jessie/libqt4-network libqt4-network]<br />
[https://packages.debian.org/jessie/libqtgui4 libqtgui4]<br />
[https://packages.debian.org/jessie/libqt4-opengl-dev libqt4-opengl-dev]<br />
||<br />
[http://packages.ubuntu.com/xenial/libqt4-dev libqt4-dev]<br />
[http://packages.ubuntu.com/xenial/libqtcore4 libqtcore4]<br />
[http://packages.ubuntu.com/xenial/libqtwebkit4 libqtwebkit4]<br />
[http://packages.ubuntu.com/xenial/libqt4-network libqt4-network]<br />
[http://packages.ubuntu.com/xenial/libqtgui4 libqtgui4]<br />
[http://packages.ubuntu.com/xenial/libqt4-opengl-dev libqt4-opengl-dev]<br />
|-<br />
| SuiteSparse<br />
|| [https://packages.debian.org/jessie/libsuitesparse-dev libsuitesparse-dev]<br />
|| [http://packages.ubuntu.com/xenial/libsuitesparse-dev libsuitesparse-dev]<br />
|-<br />
| Texlive<br />
|| texlive<br />
|| texlive<br />
|-<br />
| Xft<br />
|| [https://packages.debian.org/jessie/libxft-dev libxft-dev]<br />
|| [http://packages.ubuntu.com/xenial3/libxft-dev libxft-dev]<br />
|-<br />
| zlib<br />
|| [https://packages.debian.org/jessie/zlib1g-dev zlib1g-dev]<br />
|| [http://packages.ubuntu.com/xenial/zlib1g-dev zlib1g-dev]<br />
|-<br />
!colspan="3" style="text-align:center;"| Required to build from development sources<br />
|-<br />
| Autoconf<br />
|| [https://packages.debian.org/jessie/autoconf autoconf]<br />
|| [http://packages.ubuntu.com/xenial/autoconf autoconf]<br />
|-<br />
| Automake<br />
|| [https://packages.debian.org/jessie/automake automake]<br />
|| [http://packages.ubuntu.com/xenial/automake automake]<br />
|-<br />
| Bison<br />
|| [https://packages.debian.org/jessie/bison bison]<br />
|| [http://packages.ubuntu.com/xenial/bison bison]<br />
|-<br />
| Flex<br />
|| [https://packages.debian.org/jessie/flex flex]<br />
|| [http://packages.ubuntu.com/xenial/flex flex]<br />
|-<br />
| gperf<br />
|| [https://packages.debian.org/jessie/gperf gperf]<br />
|| [http://packages.ubuntu.com/xenial/gperf gperf]<br />
|-<br />
| gzip<br />
|| [https://packages.debian.org/jessie/gzip gzip]<br />
|| [http://packages.ubuntu.com/xenial/gzip gzip]<br />
|-<br />
| icoutils<br />
|| [https://packages.debian.org/jessie/icoutils icoutils]<br />
|| [http://packages.ubuntu.com/xenial/icoutils icoutils]<br />
|-<br />
| rsvg-convert<br />
|| [https://packages.debian.org/jessie/librsvg2-bin librsvg2-bin]<br />
|| [http://packages.ubuntu.com/xenial/librsvg2-bin librsvg2-bin]<br />
|-<br />
| libtool<br />
|| [https://packages.debian.org/jessie/libtool libtool]<br />
|| [http://packages.ubuntu.com/xenial/libtool libtool]<br />
|-<br />
| perl<br />
|| [https://packages.debian.org/jessie/perl perl]<br />
|| [http://packages.ubuntu.com/xenial/perl perl]<br />
|-<br />
| rsync<br />
|| [https://packages.debian.org/jessie/rsync rsync]<br />
|| [http://packages.ubuntu.com/xenial/rsync rsync]<br />
|-<br />
| tar<br />
|| [https://packages.debian.org/jessie/tar tar]<br />
|| [http://packages.ubuntu.com/xenial/tar tar]<br />
|}<br />
<br />
To install all of these on Ubuntu 16.04, type<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot-x11 libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
or, for Debian 8 stable,<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-7-jdk libsndfile1-dev llvm-dev lpr texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
or, for Debian 9 stable,<br />
sudo apt-get install gcc g++ gfortran make libblas-dev liblapack-dev libpcre3-dev libarpack2-dev libcurl4-gnutls-dev epstool libfftw3-dev transfig libfltk1.3-dev libfontconfig1-dev libfreetype6-dev libgl2ps-dev libglpk-dev libreadline-dev gnuplot libgraphicsmagick++1-dev libhdf5-serial-dev openjdk-8-jdk libsndfile1-dev llvm-dev texinfo libgl1-mesa-dev libosmesa6-dev pstoedit portaudio19-dev libjack-jackd2-dev libqhull-dev libqrupdate-dev libqscintilla2-dev libqt4-dev libqtcore4 libqtwebkit4 libqt4-network libqtgui4 libqt4-opengl-dev libsuitesparse-dev texlive libxft-dev zlib1g-dev autoconf automake bison flex gperf gzip icoutils librsvg2-bin libtool perl rsync tar<br />
<br />
{{Warning|<ul><li>The Debian repositoriy has several libraries for dealing with HDF data files. The recommended is {{Codeline|libhdf5-serial-dev}}. However, the {{Forge|msh|msh package}} requires [http://www.geuz.org/gmsh/ gmsh] which is incompatible with it.</li><br />
<li>The GraphicsMagick++ library (libgraphicsmagick++1-dev) on the Debian repositories was compiled with quantum 8 which limits reading images to 8 bit. The solution is to recompile [[GraphicsMagick]] with quantum 16 or 32 before building Octave.</li><br />
<li>For debian9 using openjdk-9-jdk (even providing {{Codeline|JAVA_HOME}}) could *not* be used for the java interface! Use openjdk-8-jdk instead.</li><br />
<li>When configure decides to use QT5 instead of QT4, make might fail because lrelease is missing (see [https://savannah.gnu.org/bugs/?50580 bug 50580]). It can be fixed by installing {{Codeline|qttools5-dev-tools}}</li><br />
</ul>}}<br />
<br />
=== Configuration ===<br />
<br />
As mentioned above, Octave can be compiled with the default settings using {{Codeline|./configure && make && make install}}. You can also tweak the setup using configure options. Some examples are given below for a Linux system.<br />
<br />
==== 64 bit ====<br />
<br />
To get [https://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html 64-bit] indexing requires all linked libraries to support 64-bit variables. You can omit most of these except BLAS which gives a fatal error. This is remedied by compiling [http://www.openblas.net/ OpenBLAS] with edits to its Makefile.rule so that BINARY=64 INTERFACE64=1.<br />
<br />
<code>./configure LD_LIBRARY_PATH=/opt/OpenBLAS/lib CPPFLAGS=-I/opt/OpenBLAS/include LDFLAGS=-L/opt/OpenBLAS/lib --enable-64</code><br />
<br />
==== Java ====<br />
<br />
Autodetection for java should work well on Debian-based systems. A specific Java version can be specified by passing {{codeline|JAVA_HOME}} to configure, for example<br />
<br />
./configure JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
==== HDF5 ====<br />
<br />
On current versions of Debian and Ubuntu, you may get the following warning when building an older version of Octave from source:<br />
<br />
HDF5 library not found. Octave will not be able to save or load HDF5 data files.<br />
<br />
The problem is that there are multiple versions of the hdf5 package. Octave was written with the serial version in mind but it is likely to work with the others (OpenMPI and Mpich). Due to the naming scheme done in Debian, it may be required to specify the location of the libraries. See bug {{bug|38928}} for details (starting with comment #19) but basically, use the following when running configure:<br />
<br />
./configure --with-hdf5-includedir=/usr/include/hdf5/serial --with-hdf5-libdir=/usr/lib/x86_64-linux-gnu/hdf5/serial<br />
<br />
On older versions of Debian and Ubuntu, where only one flavor of the HDF5 library could be installed at a time, you may need to build Octave against one of the MPI-enabled flavors. On these older systems, configuring Octave like this may work:<br />
<br />
./configure CPPFLAGS="-I/usr/include/mpi -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX"<br />
<br />
[[Category:Building]]<br />
[[Category:Installation]]<br />
[[Category:GNU/Linux]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Image_package&diff=10538Image package2017-11-23T18:38:28Z<p>Carandraug: /* Open Bugs */ remove {{bug|51724}} now fixed</p>
<hr />
<div>The {{Forge|image|image package}} is part of the octave-forge project. See its {{Forge|image|homepage}} for the latest release.<br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
=== Roadmap ===<br />
<br />
The following are missing targets for the next minor release of the image package (version 2.8.0). Small bug fixes, build fixes, and regressions may still be released before in a patch release (Version 2.6.X).<br />
<br />
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}}) ([http://hg.code.sf.net/p/octave/image/rev/7cf22a478792 done])<br />
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with labeled == labelid)<br />
* support passing {{codeline|bwconncomp}} output to {{codeline|regionprops}} (and then fix {{codeline|bwpropfilt}} to use that instead of a labeled image)<br />
* ND support on {{codeline|imfilter}}<br />
* check if {{codeline|normxcorr2}} is Matlab compatible and investigate making use of {{codeline|fftconvn}} since it's likely to receive large input<br />
* investigate implementing the missing deconvolution functions (see patch {{patch|8571}})<br />
* anything else that is done or submitted before the above are done<br />
<br />
=== Missing functions ===<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* activecontour<br />
* adapthisteq<br />
* affine2d<br />
* affine3d<br />
* applycform<br />
* axes2pix<br />
* bwconvhull<br />
* bwdistgeodesic<br />
* bwlookup<br />
* bwpack<br />
* bwtraceboundary<br />
* bwulterode<br />
* bwunpack<br />
* convmtx2<br />
* corner<br />
* cornermetric<br />
* cpcorr<br />
* cpselect<br />
* cpstruct2pairs<br />
* dct2<br />
* dctmtx<br />
* deconvblind<br />
* deconvlucy<br />
* deconvreg<br />
* deconvwnr<br />
* decorrstretch<br />
* demosaic<br />
* dicomanon<br />
* dicomdisp<br />
* dicomuid<br />
* dpxread<br />
* dpxinfo<br />
* fan2para<br />
* fanbeam<br />
* fliptform<br />
* freqz2<br />
* fsamp2<br />
* ftrans2<br />
* fwind1<br />
* fwind2<br />
* gabor<br />
* getimage<br />
* getimagemodel<br />
* getline<br />
* getpts<br />
* getrect<br />
* gradientweight<br />
* graycoprops<br />
* grayconnected<br />
* graydiffweight<br />
* hdrread<br />
* hdrwrite<br />
* houghlines -- (see hough_line)<br />
* houghpeaks<br />
* iccfind<br />
* iccread<br />
* iccroot<br />
* iccwrite<br />
* idct2<br />
* ifanbeam<br />
* im2java2d<br />
* ImageAdapter<br />
* imageinfo<br />
* imapplymatrix<br />
* imapprox<br />
* imbinarize<br />
* imboxfilt<br />
* imboxfilt3<br />
* imcolormaptool<br />
* imcontour<br />
* imcontrast<br />
* imdisplayrange<br />
* imdistline<br />
* imellipse<br />
* imextendedmax<br />
* imextendedmin<br />
* imfindcircles<br />
* imfreehand<br />
* imfuse<br />
* imgaborfilt<br />
* imgaussfilt<br />
* imgaussfilt3<br />
* imgca<br />
* imgcf<br />
* imguidedfilter<br />
* imhandles<br />
* imhistmatch<br />
* imhmax<br />
* imhmin<br />
* imimposemin<br />
* imline<br />
* immagbox<br />
* immovie<br />
* imoverview<br />
* imoverviewpanel<br />
* impixelinfo<br />
* impixelinfoval<br />
* impixelregionpanel<br />
* impixelregion<br />
* implay<br />
* impoint<br />
* impoly<br />
* improfile<br />
* imrect<br />
* imref2d<br />
* imref3d<br />
* imregconfig<br />
* imregcorr<br />
* imregdemons<br />
* imregister<br />
* imregtform<br />
* imroi<br />
* imscrollpanel<br />
* imsegfmm<br />
* imseggeodesic<br />
* imshowpair<br />
* imtool<br />
* imwarp<br />
* integralBoxFilter<br />
* integralBoxFilter3<br />
* integralImage<br />
* integralImage3<br />
* interfileinfo<br />
* interfileread<br />
* iptaddcallback<br />
* iptcheckhandle<br />
* iptgetapi<br />
* iptGetPointerBehavior<br />
* iptgetpref<br />
* ipticondir<br />
* iptPointerManager<br />
* iptprefs<br />
* iptremovecallback<br />
* iptSetPointerBehavior<br />
* iptsetpref<br />
* iptwindowalign<br />
* isicc<br />
* isrset<br />
* makecform<br />
* makeConstrainToRectFcn<br />
* makehdr<br />
* makeresampler<br />
* multithresh<br />
* nitfinfo<br />
* nitfread<br />
* openrset<br />
* otsuthresh<br />
* para2fan<br />
* projective2d<br />
* regionfill<br />
* roifill<br />
* roifilt2<br />
* roipoly<br />
* rsetwrite<br />
* ssim<br />
* tformarray<br />
* tonemap<br />
* truesize<br />
* visboundaries<br />
* viscircles<br />
* warp<br />
* whitepoint<br />
* wiener2<br />
* xyz2double<br />
* xyz2uint16<br />
</div><br />
<br />
=== Different functions ===<br />
<br />
* with version 2014a, Matlab introduced a new function imtranslate. This function was part of Octave's package since 2002 but Matlab version is completely different. It needs to be rewritten for Matlab compatibility.<br />
<br />
=== Missing options ===<br />
<br />
* @strel<br />
** missing SE decomposition for the diamond shape<br />
** approximation argument for the ball and disk shapes are not implemented<br />
** the translate method is not yet implemented<br />
* blockproc<br />
** The name-value input arguments have not yet been implemented.<br />
* colfilt<br />
** the option to split the image in smaller blocks before performing the im2col and filtering is ignored. Since that option only allows to use less memory and has no effect on the output is only important for sliding filtering with big blocks size.<br />
* impixel<br />
** interactive selection of points (less than 2 input arguments) is not yet implemented. Ability to create such UIs needs to be implemented in Octave core first.<br />
* imcrop<br />
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.<br />
* imwrap<br />
** no supports for SmoothEdges option<br />
* hough<br />
** no RhoResolution option<br />
<br />
=== Contributing ===<br />
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.<br />
<br />
=== Open Bugs ===<br />
<br />
{| class="wikitable" <br />
|-<br />
! bug !! bug title !! status<br />
|-<br />
| {{bug|38085}} || image package: fails to build with --enable-64 (entropyfilt) || Confirmed <br />
|-<br />
| {{bug|38087}}|| image package: graycomatrix incompatibilities with matlab || None<br />
|-<br />
| {{bug|38345}}|| image package: __spatial_filtering__() always returns class double || Confirmed<br />
|-<br />
| {{bug|41674}}|| image package: temporary arrays in imresize are doubles || None<br />
|-<br />
| {{bug|43218}}|| image package: imshear causes more signal spread than expected and inconsistent vertical offset || None<br />
|-<br />
| {{bug|44396}}|| image package: bwmorph shrink does not preserve Euler number || Confirmed<br />
|-<br />
| {{bug|44799}}|| image package: imrotate chrashes when using 'spline' as interpolation method || Confirmed<br />
|-<br />
| {{bug|44831}}|| image package: imrotate - different dimensions of output matrix || Confirmed<br />
|-<br />
| {{bug|45088}}|| image package: rangefilt requires domain and image to have equal number of dimensions || Patch Reviewed<br />
|-<br />
| {{bug|46745}}|| image package: imresize default method (bicubic) Matlab incompatible for the border pixels|| None<br />
|-<br />
| {{bug|48529}}|| image package: compilation warnings under Mac OSX|| None<br />
|-<br />
| {{bug|50071}}|| OF image: bwfill(...,4) in Octave behaves like bwfill(...,8) in MATLAB and vice versa|| None<br />
|-<br />
| {{bug|50151}}|| image package: normxcorr2 is not compatible with Matlab|| None<br />
|-<br />
| {{bug|50188}}|| image package: poly2mask does incompatible rounding|| None<br />
|-<br />
| {{bug|50257}}|| image package: imtranslate is not Matlab compatible|| Confirmed<br />
|-<br />
| {{bug|50341}}|| Missing Function imrect in image package|| None<br />
|-<br />
| {{bug|50429}}|| image package: xyz2lab changed slightly in Matlab (and other color conversion functions)|| None <br />
|-<br />
| {{bug|50656}}|| image package: bwerode does not return right size when there's more dimensions on conn || None<br />
|-<br />
| {{bug|50708}}|| image package: add demosaic.m|| Patch Submitted<br />
|-<br />
| {{bug|50732}} || Image package: infinite error loop when assigning a strel (class) object to a vector|| Confirmed<br />
|-<br />
| {{bug|50783}} || image package: imlincomb is not compatible with Matlab || none<br />
|-<br />
| {{bug|50874}} || bwdist call causes application crash || Confirmed<br />
|-<br />
| {{bug|51420}} || [octave forge] (image) imrotate is less tolerant to missing argument than Matlab || None<br />
|-<br />
| {{bug|51719}} || [octave forge] (image) watershed unit test failure || None<br />
|-<br />
| {{bug|51769}} || [octave forge] (image) imresize bilinear interpolation inaccurate || Patch Submitted<br />
|-<br />
| {{bug|51884}} || [octave forge] (image) bwmorph(blackNwhiteMatrix, "thicken", 1) returns negated result (+ strange behavior at border) || None<br />
|-<br />
| {{bug|51979}} || [octave forge] (image) Failing unit test for impyramid || None<br />
|-<br />
| {{bug|51980}} || [octave forge] (image) Failing unit test for edge|| None<br />
|-<br />
| {{bug|51981}} || [octave forge] (image) Failing unit test for otf2psf|| None<br />
|-<br />
| {{bug|51982}} || [octave forge] (image) Failing unit test for nlfilter|| None<br />
|-<br />
| {{bug|51986}} || [octave forge] (image) Failing unit test for cp2tform || None<br />
|-<br />
| {{bug|52119}} || [octave forge] (image) Add 'reflect' padding option to imfilter || None<br />
|}<br />
<br />
=== Patches ===<br />
<br />
* {{patch|8059}}: [new function for image package] ranktf.m<br />
* {{patch|8060}}: [image package new function] whitepoint.m<br />
* {{patch|8722}}: implement impixelinfo and impixelinfoval<br />
* {{patch|8813}}: image package: Extended image I/O for Analyze 7.5 format to handle big-endian images<br />
* {{patch|8866}}: image package: add metainfo.xml file for Gnome Software<br />
* {{patch|8571}}: image package: three deconvolution routines (Wiener, RL, RLTV)<br />
* {{patch|8824}}: added affine2d class<br />
* {{patch|9235}}: image package: improve filtering functions (stdfilt, entropyfilt) and add tests (also medfilt2, ordfilt2, rangefilt)<br />
* {{patch|9244}}: image package: regionprops.m - new properties ConvexHull, ConvexImage, ConvexArea, Solidity<br />
* {{patch|9354}}: image package: new function wiener2.m<br />
* {{patch|9360}}: image package: new function otsuthresh.m<br />
* {{patch|9365}}: image package: new function deconvwnr.m<br />
* {{patch|9407}}: image package: new function houghpeaks.m<br />
* {{patch|9412}}: image package: new function houghlines.m<br />
* {{patch|9448}}: image package: new function imfindcircles.m<br />
* {{patch|9449}}: image package: new function viscircles.m<br />
<br />
== Image Processing Functions (this section is under construction) ==<br />
<br />
This is a list of Image Processing functions by topic, including missing functions, related bugs and patched, and some alternatives.<br />
<br />
Note: This section is under construction so this list is still incomplete <br />
<br />
=== Basic Read and Write Image Files ===<br />
<br />
{| class="wikitable" style="text-align: center"<br />
|-<br />
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives !! Notes<br />
|- <br />
| imfinfo || 2.6.1 || || <br />
|- <br />
| imread|| 2.6.1 || || [http://kyamagu.github.io/mexopencv/matlab/imread.html cv.imread] from [https://github.com/kyamagu/mexopencv mexopencv] || <br />
in case of color image, the color order of Octave is RGB/RGBA while OpenCV color order is BGR/BGRA<br />
|- <br />
| imwrite|| 2.6.1 || || [http://kyamagu.github.io/mexopencv/matlab/imread.html cv.imwrite] from [https://github.com/kyamagu/mexopencv mexopencv] ||<br />
in case of color image, the color order of Octave is RGB/RGBA while OpenCV color order is BGR/BGRA<br />
|-<br />
|}<br />
<br />
=== Type Conversion ===<br />
<br />
{| class="wikitable" style="text-align: center"<br />
|-<br />
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes<br />
|- <br />
| adaptthresh || - || || [http://kyamagu.github.io/mexopencv/matlab/adaptiveThreshold.html cv.adaptiveThreshold] from [https://github.com/kyamagu/mexopencv mexopencv]|| <br />
|-<br />
| demosaic || - || {{bug|50708}} || [http://kyamagu.github.io/mexopencv/matlab/demosaicing.html cv.demosaicing] from [https://github.com/kyamagu/mexopencv mexopencv] ||<br />
|- <br />
| gray2ind || 2.6.1 || || ||<br />
|-<br />
| grayslice || 2.6.1 || || ||<br />
|-<br />
| graythresh || 2.6.1 || || || Octave version has more methods<br />
|-<br />
| im2double || 2.6.1 || || ||<br />
|-<br />
| im2int16 || 2.6.1 || || ||<br />
|-<br />
| im2java2d || - || || ||<br />
|-<br />
| im2single || 2.6.1 || || || <br />
|-<br />
| im2uint16 || 2.6.1 || || || <br />
|-<br />
| im2uint8 || 2.6.1 || || || <br />
|-<br />
| imbinarize || - || || imbinarize (I) is equivalent to im2bw(I, graythresh(I)), <br />
another option is [http://kyamagu.github.io/mexopencv/matlab/threshold.html cv.threshold] from [https://github.com/kyamagu/mexopencv mexopencv] <br />
||<br />
|-<br />
| imcast || 2.6.1 || || || Octave Only<br />
|-<br />
| imquantize || 2.6.1 || || ||<br />
|-<br />
| ind2gray || 2.6.1 || || ||<br />
|-<br />
| ind2rgb || 2.6.1 || || ||<br />
|-<br />
| label2rgb || 2.6.1 || || ||<br />
|-<br />
| mat2gray || 2.6.1 || || ||<br />
|-<br />
| multithresh || - || || ||<br />
|-<br />
| otsuthresh || - || {{patch|9360}} || graythresh || otsuthresh(hist) is equivalent to graythresh (hist)<br />
|-<br />
| rgb2gray || 2.6.1 || || ||<br />
|-<br />
| rgb2ind || 2.6.1 || || ||<br />
|-<br />
|}<br />
<br />
=== Image Filtering === <br />
<br />
{| class="wikitable" style="text-align: center"<br />
|-<br />
! Function !! Octave Package Version !! Related Bugs and Patches !! Alternatives || Notes<br />
|- <br />
| bwareafilt|| 2.6.1 || || ||<br />
|-<br />
| bwpropfilt || 2.6.1 || || ||<br />
|-<br />
| convmtx2 || - || || ||<br />
|-<br />
| entropyfilt || 2.6.1 || {{patch|9235}} || ||<br />
|-<br />
| fibermetric ||- || || ||<br />
|-<br />
| freqz2 || -|| || ||<br />
|-<br />
| fsamp2 || - || || ||<br />
|-<br />
| fspecial || 2.6.1 || || ||<br />
|-<br />
| ftrans2 || - || || ||<br />
|-<br />
| fwind1 || - || || ||<br />
|-<br />
| fwind2 || - || || ||<br />
|-<br />
| gabor || - || || ||<br />
|- <br />
| imboxfilt || - || || ||<br />
|-<br />
| imboxfilt3 || - || || ||<br />
|-<br />
| imfilter || 2.6.1 || || || <br />
|- <br />
| imgaborfilt || - || || ||<br />
|-<br />
| imgaussfilt || - || || ||<br />
|-<br />
| imgaussfilt3 || - || || ||<br />
|-<br />
| imguidedfilter || - || || ||<br />
|-<br />
| imsmooth|| 2.6.1|| || || Octave only<br />
|-<br />
| integralBoxFilter || - || || ||<br />
|- <br />
| integralBoxFilter3 ||- || || ||<br />
|- <br />
| integralImage ||- || || [http://kyamagu.github.io/mexopencv/matlab/integral.html cv.integral] from [https://github.com/kyamagu/mexopencv mexopencv] ||<br />
|- <br />
| integralImage3 || - || || ||<br />
|- <br />
| medfilt2 || 2.6.1 || {{patch|9235}} || ||<br />
|- <br />
| medfilt3 || - || || ||<br />
|- <br />
| nlfilter || 2.6.1 || || ||<br />
|- <br />
| normxcorr2 || 2.6.1 || {{bug|50151}} || ||<br />
|- <br />
| ordfilt2 || 2.6.1 || {{patch|9235}} || ||<br />
|- <br />
| padarray || 2.6.1 || || ||<br />
|- <br />
| rangefilt || 2.6.1 || {{bug|45088}} {{patch|9235}} || ||<br />
|- <br />
| stdfilt || 2.6.1 || {{patch|9235}} || ||<br />
|- <br />
| wiener2 || dev || || || <br />
|-<br />
|}<br />
<br />
<br />
<br />
[[Category:Octave-Forge]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Talk:Doxygen&diff=10390Talk:Doxygen2017-06-06T14:27:11Z<p>Carandraug: </p>
<hr />
<div>[[User:Carandraug|Carnë]], are you planning to update the Doxygen on a regular basis? The linked dev version is almost a month old by now...<br />
<br />
[[User:Siko1056|Siko1056]] ([[User talk:Siko1056|talk]]) 14:09, 5 June 2017 (PDT)<br />
<br />
: I updated it now. Just ping someone on IRC when you find it too much<br />
: out of date. The thing doesn't change much to start with and anyone<br />
: dependent on the very last develolpment is already playing with fire.<br />
: I think we can't set up the build there because long running jobs get<br />
: killed, it's just to serve pages. I could setup a job on my computer<br />
: that would push the build every week. The simplest method would have<br />
: a passwordless key to octave.org which I am not keen on. I don't<br />
: really have the time to setup anything more involved.<br />
: --[[User:Carandraug|carandraug]] ([[User talk:Carandraug|talk]]) 04:15, 6 June 2017 (PDT)<br />
<br />
:: Thank you for that! I build the dev version including Doxygen for myself every week. A month ago I realized, that the publication of Doxygen was really forgotten. Even if we do not really care about Doxygen-documentation, the result of Doxygen is more than a good start to dig into the sources (the dependencies become way clearer). On https://octave.space, I thought it would be nice to share "my effort" with the community as a by-product, to provide up-to-date Doxygen, without annoying anyone to do any work. Using https://octave.space I can keep the things up-to-date myself, on octave.org not. Personally, I do get my Doxygen and I was also fine providing only the Doxygen for stable releases here, again, it was just the idea of being kind to the community without almost any effort for me.<br />
:: [[User:Siko1056|Siko1056]] ([[User talk:Siko1056|talk]]) 05:14, 6 June 2017 (PDT)<br />
<br />
::: I used to do the same on octave forge but then was moved to<br />
::: octave.org (which I think is a good thing). I didn't have an<br />
::: account on that server until last month which is when I started<br />
::: updating it again.<br />
::: --[[User:Carandraug|carandraug]] ([[User talk:Carandraug|talk]]) 07:27, 6 June 2017 (PDT)</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Talk:Doxygen&diff=10388Talk:Doxygen2017-06-06T11:15:58Z<p>Carandraug: </p>
<hr />
<div>[[User:Carandraug|Carnë]], are you planning to update the Doxygen on a regular basis? The linked dev version is almost a month old by now...<br />
<br />
[[User:Siko1056|Siko1056]] ([[User talk:Siko1056|talk]]) 14:09, 5 June 2017 (PDT)<br />
<br />
: I updated it now. Just ping someone on IRC when you find it too much<br />
: out of date. The thing doesn't change much to start with and anyone<br />
: dependent on the very last develolpment is already playing with fire.<br />
: I think we can't set up the build there because long running jobs get<br />
: killed, it's just to serve pages. I could setup a job on my computer<br />
: that would push the build every week. The simplest method would have<br />
: a passwordless key to octave.org which I am not keen on. I don't<br />
: really have the time to setup anything more involved.<br />
: --[[User:Carandraug|carandraug]] ([[User talk:Carandraug|talk]]) 04:15, 6 June 2017 (PDT)</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Doxygen&diff=10386Doxygen2017-06-05T11:31:17Z<p>Carandraug: use octave.org links and link to stable and dev</p>
<hr />
<div>==== What is Doxygen ? ====<br />
<br />
Doxygen is the de facto standard tool for generating documentation from annotated C++ sources [http://www.stack.nl/~dimitri/doxygen/]<br />
<br />
==== Generating the Doxygen documentation for Octave ====<br />
<br />
Doxygen documentation for Octave is easily generated from Octave sources. Instructions can be found in [http://hg.savannah.gnu.org/hgweb/octave/file/tip/doc/doxyhtml/README doc/doxyhtml/README].<br />
<br />
==== Where can I browse the Doxygen documentation for Octave ? ====<br />
<br />
* [http://octave.org/doxygen/stable Doxygen for the current GNU Octave release]<br />
* [http://octave.org/doxygen/dev Doxygen for the current GNU Octave development sources]<br />
<br />
Alternatively, you can access version specific Doxygen documentation:<br />
<br />
* [http://octave.org/doxygen/4.2 Doxygen for GNU Octave 4.2.x]<br />
* [http://octave.org/doxygen/4.0 Doxygen for GNU Octave 4.0.x]<br />
* [http://octave.org/doxygen/3.8 Doxygen for GNU Octave 3.8.x]<br />
* [http://octave.org/doxygen/3.6 Doxygen for GNU Octave 3.6.x]<br />
* [http://octave.org/doxygen/3.4 Doxygen for GNU Octave 3.4.x]<br />
* [http://octave.org/doxygen/3.2 Doxygen for GNU Octave 3.2.x]<br />
<br />
==== What is the current status of Octave's Doxygen documentation ? ====<br />
<br />
Very little Doxygen documentation is currently available in Octave's source code. Which is why "Doxygen documentation for the C++ classes" is listed in the [http://wiki.octave.org/Projects#Documentation_and_On-Line_Help Projects] page of this wiki.<br />
<br />
[[Category:Development]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Fedora&diff=10336Fedora2017-05-10T16:37:34Z<p>Carandraug: Redirected page to Octave for Red Hat Linux systems</p>
<hr />
<div>#REDIRECT [[Octave_for_Red_Hat_Linux_systems]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Image_package&diff=10326Image package2017-04-25T00:19:06Z<p>Carandraug: /* Open Bugs */ remove fixed {{bug|48794}} image package: imreconstruct should clip marker > mask|| None</p>
<hr />
<div>The {{Forge|image|image package}} is part of the octave-forge project. See its {{Forge|image|homepage}} for the latest release.<br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
=== Roadmap ===<br />
<br />
The following are missing targets for the next minor release of the image package (version 2.8.0). Small bug fixes, build fixes, and regressions may still be released before in a patch release (Version 2.6.X).<br />
<br />
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}}) ([http://hg.code.sf.net/p/octave/image/rev/7cf22a478792 done])<br />
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with labeled == labelid)<br />
* support passing {{codeline|bwconncomp}} output to {{codeline|regionprops}} (and then fix {{codeline|bwpropfilt}} to use that instead of a labeled image)<br />
* ND support on {{codeline|imfilter}}<br />
* check if {{codeline|normxcorr2}} is Matlab compatible and investigate making use of {{codeline|fftconvn}} since it's likely to receive large input<br />
* investigate implementing the missing deconvolution functions (see patch {{patch|8571}})<br />
* anything else that is done or submitted before the above are done<br />
<br />
=== Missing functions ===<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* activecontour<br />
* adapthisteq<br />
* affine2d<br />
* affine3d<br />
* applycform<br />
* axes2pix<br />
* bwconvhull<br />
* bwdistgeodesic<br />
* bwlookup<br />
* bwpack<br />
* bwtraceboundary<br />
* bwulterode<br />
* bwunpack<br />
* convmtx2<br />
* corner<br />
* cornermetric<br />
* cpcorr<br />
* cpselect<br />
* cpstruct2pairs<br />
* dct2<br />
* dctmtx<br />
* deconvblind<br />
* deconvlucy<br />
* deconvreg<br />
* deconvwnr<br />
* decorrstretch<br />
* demosaic<br />
* dicomanon<br />
* dicomdisp<br />
* dicomuid<br />
* dpxread<br />
* dpxinfo<br />
* fan2para<br />
* fanbeam<br />
* fliptform<br />
* freqz2<br />
* fsamp2<br />
* ftrans2<br />
* fwind1<br />
* fwind2<br />
* gabor<br />
* getimage<br />
* getimagemodel<br />
* getline<br />
* getpts<br />
* getrect<br />
* gradientweight<br />
* graycoprops<br />
* grayconnected<br />
* graydiffweight<br />
* hdrread<br />
* hdrwrite<br />
* houghlines -- (see hough_line)<br />
* houghpeaks<br />
* iccfind<br />
* iccread<br />
* iccroot<br />
* iccwrite<br />
* idct2<br />
* ifanbeam<br />
* im2java2d<br />
* ImageAdapter<br />
* imageinfo<br />
* imapplymatrix<br />
* imapprox<br />
* imboxfilt<br />
* imboxfilt3<br />
* imcolormaptool<br />
* imcontour<br />
* imcontrast<br />
* imdisplayrange<br />
* imdistline<br />
* imellipse<br />
* imextendedmax<br />
* imextendedmin<br />
* imfindcircles<br />
* imfreehand<br />
* imfuse<br />
* imgaborfilt<br />
* imgaussfilt<br />
* imgaussfilt3<br />
* imgca<br />
* imgcf<br />
* imguidedfilter<br />
* imhandles<br />
* imhistmatch<br />
* imhmax<br />
* imhmin<br />
* imimposemin<br />
* imline<br />
* immagbox<br />
* immovie<br />
* imoverview<br />
* imoverviewpanel<br />
* impixelinfo<br />
* impixelinfoval<br />
* impixelregionpanel<br />
* impixelregion<br />
* implay<br />
* impoint<br />
* impoly<br />
* improfile<br />
* imrect<br />
* imref2d<br />
* imref3d<br />
* imregconfig<br />
* imregcorr<br />
* imregdemons<br />
* imregister<br />
* imregtform<br />
* imroi<br />
* imscrollpanel<br />
* imsegfmm<br />
* imseggeodesic<br />
* imshowpair<br />
* imtool<br />
* imwarp<br />
* integralBoxFilter<br />
* integralBoxFilter3<br />
* integralImage<br />
* integralImage3<br />
* interfileinfo<br />
* interfileread<br />
* iptaddcallback<br />
* iptcheckhandle<br />
* iptgetapi<br />
* iptGetPointerBehavior<br />
* iptgetpref<br />
* ipticondir<br />
* iptPointerManager<br />
* iptprefs<br />
* iptremovecallback<br />
* iptSetPointerBehavior<br />
* iptsetpref<br />
* iptwindowalign<br />
* isicc<br />
* isrset<br />
* makecform<br />
* makeConstrainToRectFcn<br />
* makehdr<br />
* makeresampler<br />
* multithresh<br />
* nitfinfo<br />
* nitfread<br />
* openrset<br />
* para2fan<br />
* projective2d<br />
* regionfill<br />
* roifill<br />
* roifilt2<br />
* roipoly<br />
* rsetwrite<br />
* ssim<br />
* tformarray<br />
* tonemap<br />
* truesize<br />
* visboundaries<br />
* viscircles<br />
* warp<br />
* whitepoint<br />
* wiener2<br />
* xyz2double<br />
* xyz2uint16<br />
</div><br />
<br />
=== Different functions ===<br />
<br />
* with version 2014a, Matlab introduced a new function imtranslate. This function was part of Octave's package since 2002 but Matlab version is completely different. It needs to be rewritten for Matlab compatibility.<br />
<br />
=== Missing options ===<br />
<br />
* @strel<br />
** missing SE decomposition for the diamond shape<br />
** approximation argument for the ball and disk shapes are not implemented<br />
** the translate method is not yet implemented<br />
* blockproc<br />
** The name-value input arguments have not yet been implemented.<br />
* colfilt<br />
** the option to split the image in smaller blocks before performing the im2col and filtering is ignored. Since that option only allows to use less memory and has no effect on the output is only important for sliding filtering with big blocks size.<br />
* impixel<br />
** interactive selection of points (less than 2 input arguments) is not yet implemented. Ability to create such UIs needs to be implemented in Octave core first.<br />
* imcrop<br />
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.<br />
* imwrap<br />
** no supports for SmoothEdges option<br />
* hough<br />
** no RhoResolution option<br />
<br />
=== Contributing ===<br />
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.<br />
<br />
=== Open Bugs ===<br />
<br />
{| class="wikitable" <br />
|-<br />
! bug !! bug title !! status<br />
|-<br />
| {{bug|38085}} || image package: fails to build with --enable-64 (entropyfilt) || Confirmed <br />
|-<br />
| {{bug|38087}}|| image package: graycomatrix incompatibilities with matlab || None<br />
|-<br />
| {{bug|38345}}|| image package: __spatial_filtering__() always returns class double || Confirmed<br />
|-<br />
| {{bug|41674}}|| image package: temporary arrays in imresize are doubles || None<br />
|-<br />
| {{bug|43218}}|| image package: imshear causes more signal spread than expected and inconsistent vertical offset || None<br />
|-<br />
| {{bug|44396}}|| image package: bwmorph shrink does not preserve Euler number || Confirmed<br />
|-<br />
| {{bug|44799}}|| image package: imrotate chrashes when using 'spline' as interpolation method || Confirmed<br />
|-<br />
| {{bug|44831}}|| image package: imrotate - different dimensions of output matrix || Confirmed<br />
|-<br />
| {{bug|45088}}|| image package: rangefilt requires domain and image to have equal number of dimensions || Patch Reviewed<br />
|-<br />
| {{bug|46745}}|| image package: imresize default method (bicubic) Matlab incompatible for the border pixels|| None<br />
|-<br />
| {{bug|47115}}|| label2rgb from image-package doesn't work for labels with value above the uint16 limit|| Confirmed<br />
|-<br />
| {{bug|48529}}|| image package: compilation warnings under Mac OSX|| None<br />
|-<br />
| {{bug|50071}}|| OF image: bwfill(...,4) in Octave behaves like bwfill(...,8) in MATLAB and vice versa|| None<br />
|-<br />
| {{bug|50151}}|| image package: normxcorr2 is not compatible with Matlab|| None<br />
|-<br />
| {{bug|50188}}|| image package: poly2mask does incompatible rounding|| None<br />
|-<br />
| {{bug|50257}}|| image package: imtranslate is not Matlab compatible|| Confirmed<br />
|-<br />
| {{bug|50341}}|| Missing Function imrect in image package|| None<br />
|-<br />
| {{bug|50429}}|| image package: xyz2lab changed slightly in Matlab (and other color conversion functions)|| None <br />
|-<br />
| {{bug|50656}}|| image package: bwerode does not return right size when there's more dimensions on conn || None<br />
|-<br />
| {{bug|50708}}|| image package: add demosaic.m|| Patch Submitted<br />
|-<br />
| {{bug|50732}} || Image package: infinite error loop when assigning a strel (class) object to a vector|| Confirmed<br />
|-<br />
| {{bug|50783}} || image package: imlincomb is not compatible with Matlab || none<br />
|-<br />
|}<br />
<br />
=== Patches ===<br />
<br />
* {{patch|8059}}: [new function for image package] ranktf.m<br />
* {{patch|8060}}: [image package new function] whitepoint.m<br />
* {{patch|8722}}: implement impixelinfo and impixelinfoval<br />
* {{patch|8813}}: image package: Extended image I/O for Analyze 7.5 format to handle big-endian images<br />
* {{patch|8866}}: image package: add metainfo.xml file for Gnome Software<br />
* {{patch|8571}}: image package: three deconvolution routines (Wiener, RL, RLTV)<br />
* {{patch|8824}}: added affine2d class<br />
* {{patch|9235}}: image package: improve filtering functions (stdfilt, entropyfilt) and add tests (also medfilt2, ordfilt2, rangefilt)<br />
* {{patch|9244}}: image package: regionprops.m - new properties ConvexHull, ConvexImage, ConvexArea, Solidity<br />
[[Category:Octave-Forge]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Image_package&diff=10315Image package2017-04-13T18:39:53Z<p>Carandraug: /* Open Bugs */ fixed {{bug|49613}} image package - regionprops.m majoraxislength broken</p>
<hr />
<div>The {{Forge|image|image package}} is part of the octave-forge project. See its {{Forge|image|homepage}} for the latest release.<br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
=== Roadmap ===<br />
<br />
The following are missing targets for the next minor release of the image package (version 2.8.0). Small bug fixes, build fixes, and regressions may still be released before in a patch release (Version 2.6.X).<br />
<br />
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}}) ([http://hg.code.sf.net/p/octave/image/rev/7cf22a478792 done])<br />
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with labeled == labelid)<br />
* support passing {{codeline|bwconncomp}} output to {{codeline|regionprops}} (and then fix {{codeline|bwpropfilt}} to use that instead of a labeled image)<br />
* ND support on {{codeline|imfilter}}<br />
* check if {{codeline|normxcorr2}} is Matlab compatible and investigate making use of {{codeline|fftconvn}} since it's likely to receive large input<br />
* investigate implementing the missing deconvolution functions (see patch {{patch|8571}})<br />
* anything else that is done or submitted before the above are done<br />
<br />
=== Missing functions ===<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* activecontour<br />
* adapthisteq<br />
* affine2d<br />
* affine3d<br />
* applycform<br />
* axes2pix<br />
* bwconvhull<br />
* bwdistgeodesic<br />
* bwlookup<br />
* bwpack<br />
* bwtraceboundary<br />
* bwulterode<br />
* bwunpack<br />
* convmtx2<br />
* corner<br />
* cornermetric<br />
* cpcorr<br />
* cpselect<br />
* cpstruct2pairs<br />
* dct2<br />
* dctmtx<br />
* deconvblind<br />
* deconvlucy<br />
* deconvreg<br />
* deconvwnr<br />
* decorrstretch<br />
* demosaic<br />
* dicomanon<br />
* dicomdisp<br />
* dicomuid<br />
* dpxread<br />
* dpxinfo<br />
* fan2para<br />
* fanbeam<br />
* fliptform<br />
* freqz2<br />
* fsamp2<br />
* ftrans2<br />
* fwind1<br />
* fwind2<br />
* gabor<br />
* getimage<br />
* getimagemodel<br />
* getline<br />
* getpts<br />
* getrect<br />
* gradientweight<br />
* graycoprops<br />
* grayconnected<br />
* graydiffweight<br />
* hdrread<br />
* hdrwrite<br />
* houghlines -- (see hough_line)<br />
* houghpeaks<br />
* iccfind<br />
* iccread<br />
* iccroot<br />
* iccwrite<br />
* idct2<br />
* ifanbeam<br />
* im2java2d<br />
* ImageAdapter<br />
* imageinfo<br />
* imapplymatrix<br />
* imapprox<br />
* imboxfilt<br />
* imboxfilt3<br />
* imcolormaptool<br />
* imcontour<br />
* imcontrast<br />
* imdisplayrange<br />
* imdistline<br />
* imellipse<br />
* imextendedmax<br />
* imextendedmin<br />
* imfindcircles<br />
* imfreehand<br />
* imfuse<br />
* imgaborfilt<br />
* imgaussfilt<br />
* imgaussfilt3<br />
* imgca<br />
* imgcf<br />
* imguidedfilter<br />
* imhandles<br />
* imhistmatch<br />
* imhmax<br />
* imhmin<br />
* imimposemin<br />
* imline<br />
* immagbox<br />
* immovie<br />
* imoverview<br />
* imoverviewpanel<br />
* impixelinfo<br />
* impixelinfoval<br />
* impixelregionpanel<br />
* impixelregion<br />
* implay<br />
* impoint<br />
* impoly<br />
* improfile<br />
* imrect<br />
* imref2d<br />
* imref3d<br />
* imregconfig<br />
* imregcorr<br />
* imregdemons<br />
* imregister<br />
* imregtform<br />
* imroi<br />
* imscrollpanel<br />
* imsegfmm<br />
* imseggeodesic<br />
* imshowpair<br />
* imtool<br />
* imwarp<br />
* integralBoxFilter<br />
* integralBoxFilter3<br />
* integralImage<br />
* integralImage3<br />
* interfileinfo<br />
* interfileread<br />
* iptaddcallback<br />
* iptcheckhandle<br />
* iptgetapi<br />
* iptGetPointerBehavior<br />
* iptgetpref<br />
* ipticondir<br />
* iptPointerManager<br />
* iptprefs<br />
* iptremovecallback<br />
* iptSetPointerBehavior<br />
* iptsetpref<br />
* iptwindowalign<br />
* isicc<br />
* isrset<br />
* makecform<br />
* makeConstrainToRectFcn<br />
* makehdr<br />
* makeresampler<br />
* multithresh<br />
* nitfinfo<br />
* nitfread<br />
* openrset<br />
* para2fan<br />
* projective2d<br />
* regionfill<br />
* roifill<br />
* roifilt2<br />
* roipoly<br />
* rsetwrite<br />
* ssim<br />
* tformarray<br />
* tonemap<br />
* truesize<br />
* visboundaries<br />
* viscircles<br />
* warp<br />
* whitepoint<br />
* wiener2<br />
* xyz2double<br />
* xyz2uint16<br />
</div><br />
<br />
=== Different functions ===<br />
<br />
* with version 2014a, Matlab introduced a new function imtranslate. This function was part of Octave's package since 2002 but Matlab version is completely different. It needs to be rewritten for Matlab compatibility.<br />
<br />
=== Missing options ===<br />
<br />
* @strel<br />
** missing SE decomposition for the diamond shape<br />
** approximation argument for the ball and disk shapes are not implemented<br />
** the translate method is not yet implemented<br />
* blockproc<br />
** The name-value input arguments have not yet been implemented.<br />
* colfilt<br />
** the option to split the image in smaller blocks before performing the im2col and filtering is ignored. Since that option only allows to use less memory and has no effect on the output is only important for sliding filtering with big blocks size.<br />
* impixel<br />
** interactive selection of points (less than 2 input arguments) is not yet implemented. Ability to create such UIs needs to be implemented in Octave core first.<br />
* imcrop<br />
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.<br />
* imwrap<br />
** no supports for SmoothEdges option<br />
* hough<br />
** no RhoResolution option<br />
<br />
=== Contributing ===<br />
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.<br />
<br />
=== Open Bugs ===<br />
<br />
{| class="wikitable" <br />
|-<br />
! bug !! bug title !! status<br />
|-<br />
| {{bug|38085}} || image package: fails to build with --enable-64 (entropyfilt) || Confirmed <br />
|-<br />
| {{bug|38087}}|| image package: graycomatrix incompatibilities with matlab || None<br />
|-<br />
| {{bug|38345}}|| image package: __spatial_filtering__() always returns class double || Confirmed<br />
|-<br />
| {{bug|41674}}|| image package: temporary arrays in imresize are doubles || None<br />
|-<br />
| {{bug|43218}}|| image package: imshear causes more signal spread than expected and inconsistent vertical offset || None<br />
|-<br />
| {{bug|44396}}|| image package: bwmorph shrink does not preserve Euler number || Confirmed<br />
|-<br />
| {{bug|44799}}|| image package: imrotate chrashes when using 'spline' as interpolation method || Confirmed<br />
|-<br />
| {{bug|44831}}|| image package: imrotate - different dimensions of output matrix || Confirmed<br />
|-<br />
| {{bug|45088}}|| image package: rangefilt requires domain and image to have equal number of dimensions || Patch Reviewed<br />
|-<br />
| {{bug|46745}}|| image package: imresize default method (bicubic) Matlab incompatible for the border pixels|| None<br />
|-<br />
| {{bug|47115}}|| label2rgb from image-package doesn't work for labels with value above the uint16 limit|| Confirmed<br />
|-<br />
| {{bug|48529}}|| image package: compilation warnings under Mac OSX|| None<br />
|-<br />
| {{bug|48794}}|| image package: imreconstruct should clip marker > mask|| None<br />
|-<br />
| {{bug|50071}}|| OF image: bwfill(...,4) in Octave behaves like bwfill(...,8) in MATLAB and vice versa|| None<br />
|-<br />
| {{bug|50151}}|| image package: normxcorr2 is not compatible with Matlab|| None<br />
|-<br />
| {{bug|50188}}|| image package: poly2mask does incompatible rounding|| None<br />
|-<br />
| {{bug|50257}}|| image package: imtranslate is not Matlab compatible|| Confirmed<br />
|-<br />
| {{bug|50341}}|| Missing Function imrect in image package|| None<br />
|-<br />
| {{bug|50429}}|| image package: xyz2lab changed slightly in Matlab (and other color conversion functions)|| None <br />
|-<br />
| {{bug|50656}}|| image package: bwerode does not return right size when there's more dimensions on conn || None<br />
|-<br />
| {{bug|50708}}|| image package: add demosaic.m|| Patch Submitted<br />
|-<br />
| {{bug|50732}} || Image package: infinite error loop when assigning a strel (class) object to a vector|| Confirmed<br />
|-<br />
|}<br />
<br />
=== Patches ===<br />
<br />
* {{patch|8059}}: [new function for image package] ranktf.m<br />
* {{patch|8060}}: [image package new function] whitepoint.m<br />
* {{patch|8722}}: implement impixelinfo and impixelinfoval<br />
* {{patch|8813}}: image package: Extended image I/O for Analyze 7.5 format to handle big-endian images<br />
* {{patch|8866}}: image package: add metainfo.xml file for Gnome Software<br />
* {{patch|8571}}: image package: three deconvolution routines (Wiener, RL, RLTV)<br />
* {{patch|8824}}: added affine2d class<br />
* {{patch|9235}}: image package: improve filtering functions (stdfilt, entropyfilt) and add tests (also medfilt2, ordfilt2, rangefilt)<br />
* {{patch|9244}}: image package: regionprops.m - new properties ConvexHull, ConvexImage, ConvexArea, Solidity<br />
[[Category:Octave-Forge]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Octave_for_macOS&diff=10314Octave for macOS2017-04-13T16:27:23Z<p>Carandraug: update what is the last release version</p>
<hr />
<div>GNU Octave is primarily developed on GNU/Linux and other POSIX conformant systems. <br />
GNU Octave for Mac OS X is readily available using [http://en.wikipedia.org/wiki/Package_management_system package managers] such as [http://www.finkproject.org/ Fink], [http://www.macports.org/ MacPorts], and [http://mxcl.github.com/homebrew/ Homebrew].<br />
<br />
About version numbers (as of April 2017):<br />
<br />
*The 4.2.x are current releases.<br />
*The 4.0.x are previous releases.<br />
*The 3.8.x or earlier are very old releases.<br />
<br />
==Installing a Mac OS X Bundle==<br />
<br />
Good progress has been made on creating a reliable App bundle for Octave on Mac OS X. Approaches using [http://www.macports.org MacPorts] and [http://brew.sh Homebrew] have been considered.<br />
<br />
* [https://sourceforge.net/projects/octave/files/Octave%20MacOSX%20Binary/2016-07-11-binary-octave-4.0.3/octave_gui_403_appleblas.dmg/download download Octave 4.0.3 with graphical user interface] (OS X 10.9+),<br />
<br />
To compile and create the application bundle yourself, see the instructions on [[Create_a_MacOS_X_App_Bundle_Using_Homebrew|how to create the bundle using Homebrew]]. (See instructions on [[Create_a_MacOS_X_App_Bundle_Using_MacPorts|how to create a bundle using Macports]] for reference, but this approach is not currently being used.)<br />
<br />
==Octave 4.0.2 VM installer for Mac OS X 10.10 Yosemite, 10.11 El Capitan, 10.12 Sierra==<br />
[http://deepneural.blogspot.fr/p/welcome.html Point and click configuration files] that cause Vagrant to automatically download and configure an Octave 4.0.2 server VM under OS X including 10.10 Yosemite, 10.11 El Capitan and 10.12 Sierra. The install process pulls down Octave 4.0.2 from the repository. All software used in running this server VM is open source (Vagrant, VirtualBox, Octave). The Octave GUI and graphics will display seamlessly on the Mac via the Mac's native X-windows server, while the server runs headless.. The recommended configuration ensures that by default user files written by the GUI are in a folder shared with the Mac's filesystem, and the VM suspends automatically when the user quits the GUI. Any edited files then persist in the Mac's shared folder.<br />
<br />
==Binary installer for OSX 10.9.1==<br />
<br />
A [http://sourceforge.net/projects/octave/files/Octave%20MacOSX%20Binary/2013-12-30%20binary%20installer%20of%20Octave%203.8.0%20for%20OSX%2010.9.1%20%28beta%29/ binary installer] for Mavericks can be found on Octave Forge.<br />
<br />
This installer will install all binaries for GNU Octave 3.8.0 itself and its dependencies under <br />
<br />
/usr/local/octave/3.8.0 <br />
<br />
And will create two entries in the Applications folder <br />
<br />
/Applications/Octave-cli.app <br />
/Applications/Octave-gui.app <br />
<br />
Which will start Octave in CLI and GUI mode respectively, these are just small wrappers containing a startup script and an icon to allow launching Octave from the Finder. <br />
<br />
If you wish to uninstall GNU Octave 3.8.0 and all other software installed by this installer you can simply move the three folders listed above to the Trash. Notice that you will need to authenticate with an administrator password to be allowed to do so.<br />
<br />
You may need to override Gatekeeper to allow installation. You may find instructions about how to do this on [http://support.apple.com/kb/ht5290 this page] in the section labeled "How to open an app from a unidentified developer and exempt it from Gatekeeper". <br />
<br />
In short: <br />
<br />
* In Finder, Control-click or right click the icon of the app. <br />
* Select Open from the top of contextual menu that appears. <br />
* Click Open in the dialog box. If prompted, enter an administrator name and password. <br />
<br />
This installer is known to work on OSX 10.9.1, you may try, at your own risk, to use it for installing on other system versions but it is not guaranteed to work.<br />
<br />
==Manual Installation from Source==<br />
<br />
The page [[Octave for Mac]] provides minimalistic instructions for building Octave from source on Mac OS X. Additional [http://www.gnu.org/software/octave/support.html support] for those who need assistance in building Octave is available.<br />
<br />
==Package Managers==<br />
<br />
A package manager is a software tool to automate the process of installing, upgrading, configuring, and removing software packages for a computer's operating system in a consistent manner. It typically maintains a database of software dependencies and version information to prevent software mismatches and missing prerequisites.<br />
Packages are distributions of software, applications and data. Packages also contain metadata, such as the software's name, description of its purpose, version number, vendor, checksums, and a list of dependencies necessary for the software to run properly. Upon installation, metadata is stored in a local package database.<br />
Operating systems based on Linux and other Unix-like systems typically consist of hundreds or even thousands of distinct software packages; in the former case, a package management system is a convenience, in the latter case it becomes essential.<br />
<br />
There are three reputable package managers available for Mac OS X. GNU Octave for Mac OS X is readily available using [http://en.wikipedia.org/wiki/Package_management_system package managers] such as [http://www.finkproject.org/ Fink], [http://www.macports.org/ MacPorts], and [http://brew.sh/ Homebrew].<br />
<br />
The most recent version of Fink's Octave package, MacPorts' Octave port, and Homebrew's Octave formula are generally not the same. Please check the web sites for these package managers to determine if the version of Octave you desire is available.<br />
<br />
===Xcode Dependency===<br />
<br />
Each package manager requires that Xcode be installed. In part this is to provide an initial set of development tools. It *may* be possible to substitute the [https://github.com/kennethreitz/osx-gcc-installer Mac OS X gcc Installer] by Kenneth Reitz, but this alternative has not yet been tested. If any curious/industrious users experiment with using Kenneth's solution over Apple's Xcode, please let Octave's developers know of the results. Or, if you prefer, just update the itemized list below. It is recommended that users with Xcode already installed avoid installing Kenneth's solution, as it may break your existing Xcode installation.<br />
* Fink: The Mac OS X gcc Installer has not been tested.<br />
* MacPorts: The Mac OS X gcc Installer has not been tested.<br />
* Homebrew: The Mac OS X gcc Installer has not been tested.<br />
<br />
===Fink===<br />
<br />
[http://www.finkproject.org/ The Fink project] is an effort to port and package open-source Unix programs to Mac OS X. Fink uses [http://en.wikipedia.org/wiki/Dpkg dpkg] and [http://en.wikipedia.org/wiki/Advanced_Packaging_Tool APT] ([http://en.wikipedia.org/wiki/Debian Debian's] package management system), as well as its own frontend program, fink (which is implemented as a set of [http://en.wikipedia.org/wiki/Perl_module Perl modules]).<br />
<br />
====Simple Installation Instructions====<br />
<br />
*Install Xcode via the Mac App Store.<br />
** Once installed, install the Command Line Tools from Xcode's Apple Menu > Preferences > Downloads on 10.7 or 10.8, and use {{Codeline|<nowiki>sudo xcode-select --install</nowiki>}} on 10.9 or 10.10 .<br />
*Follow [http://www.finkproject.org/download/srcdist.php Fink's installation instructions]. For OS X 10.8-10.10, enabling the binary distribution during the initial setup will save you a lot of build time. For those who prefer it, there is a GUI available for Fink, [http://finkcommander.sourceforge.net Fink Commander].<br />
*Fink has excellent support for Octave and includes recent as well as dated versions. A list of what Fink has available for Octave is [http://pdb.finkproject.org/pdb/browse.php?summary=octave here]. To install the latest Octave with GUI support, type {{Codeline|<nowiki>fink install octave-qtmac</nowiki>}} or {{Codeline|<nowiki>fink install octave-qtx11</nowiki>}} at the Terminal's command line. For those running the 64 bit version of Fink, it is recommended that {{Codeline|octave-atlas-qtmac}} or {{Codeline|octave-atlas-qtx11}} be installed instead as there are some bugs/features with Apple's vecLib for the X86_64 architecture. Octave has many dependencies which will be downloaded and installed prior to Octave. The entire installation process can take many hours.<br />
* Fink should also be used to install [[http://octave.sourceforge.net/packages.php packages] for Octave. For example, the control systems package may be installed by typing {{Codeline|fink install control-atlas-oct382}} at a terminals command line.<br />
<br />
For the {{Codeline|doc()}} function to be supported by Octave, either the unversioned {{Codeline|octave}}, {{Codeline|octave-atlas}}, or {{Codeline|octave-ref}} package must be installed. Essentially, those features used at run-time which don't have a version somewhere in the file path are included in these packages.<br />
<br />
===MacPorts===<br />
<br />
[http://www.macports.org/ MacPorts], formerly called DarwinPorts, is a package management system that simplifies the installation of software on the Mac OS X and Darwin operating systems. It is a free/open source software project to simplify installation of other free/open source software. Similar in aim and function to Fink and the BSDs' ports collections, DarwinPorts was started in 2002 as part of the OpenDarwin project, with the involvement of a number of Apple Inc. employees including Landon Fuller, Kevin Van Vechten, and Jordan Hubbard.<br />
<br />
Following instructions are made for MacPorts 2.3.4 on '''Mac OS X 10.11 (El Capitan)''' and '''GNU Octave 4.0.3''' in the first place:<br />
<br />
====MacPorts Installation====<br />
You have to install MacPorts prior to the Octave installation anyway.<br />
*Install "Xcode" via the Mac App Store and the "Xcode Command Line Tools" as described at [http://guide.macports.org/#installing.xcode MacPorts' installation instructions].<br />
*Install the appropriate [https://www.macports.org/install.php MacPorts version] for your OS X version. If you had installed Mac Ports in the past already, update it first by typing {{Codeline|sudo port selfupdate}} and {{Codeline|sudo port upgrade outdated}} in the terminal.<br />
<br />
====Basic Installation Instructions====<br />
*Now an Octave installation should work with {{Codeline|sudo port install octave}} out-of-the-box but for some reasons the next lines are worth reading.<br />
*If you decide to do the custom Octave installation ignore the point above and go to the next chapter. The custom installation will consume more (compilation) time. The basic installation may work for the most users.<br />
<br />
====Custom Installation Instructions====<br />
For best performance, variability and reliability the custom installation is suggested.<br />
<br />
'''Preliminary Port Installations''' <br />
*The new Octave 4 port relies on the accelerator variant. Unfortunately this variant is known for some problems (see below). A better alternative is the "atlas" port, it is necessary to build it with the here specified variant prior to the Octave port installation: {{Codeline|sudo port install atlas +gcc5}}. This can last for many hours. Do this overnight. If a prior atlas installation failed, do {{Codeline|sudo port clean atlas}} before reinstallation.<br />
*Octave depends on arpack, too. Unfortunately arpack is installed with the ''accelerate'' variant by default. The ''accelerate'' variant uses Apple's Vector Libraries which have some known bugs that can cause Octave to crash if using certain functions in arpack. To avoid this install arpack with the ''atlas'' variant instead of the ''accelerate'' variant {{Codeline|sudo port install arpack -accelerate+atlas}}. You can even do this after you installed Octave. The new variant become active by default.<br />
<br />
'''Octave Installation'''<br />
*MacPorts has good support for Octave. A list of what MacPorts has available for Octave is [http://www.macports.org/ports.php?by=name&substr=octave here]. To install the most recent version of Octave, type {{Codeline|sudo port install octave -accelerate+atlas}} at the Terminal's command line. Octave has many dependencies which will be downloaded and installed prior to Octave. The entire installation process can take some time.<br />
*Note that {{Codeline|octave-devel}} has been replaced by {{Codeline|octave}}, see [https://trac.macports.org/changeset/114034 MacPorts Revision 114034].<br />
*The variant installed may be important to the user's experience. The available variants for {{Codeline|octave}} are displayed by typing {{Codeline|port variants octave}}. In MacPorts 2.3.4 the variants ''accelerate'', ''app'', ''docs'', ''fltk'', ''gfortran'', ''graphicsmagic'', ''qt4gui'' and ''sound'' are installed by default (marked with '+' sign in {{Codeline|port variants octave}} output). If you need Java support add the new Java variant (+java). A installed Java JRE is mandatory. Go To the Oracle [https://www.java.com/ Java website] for Download. The following command works fine: {{Codeline|sudo port install octave -accelerate+atlas+java}}<br />
*<s>If Octave crashes when plotting use the Gnuplot graphic toolkit instead of FLTK. Type {{Codeline|graphics_toolkit('gnuplot')}} in Octave before plotting. For using the nicer wxt-terminal of Gnuplot, type {{Codeline|setenv("GNUTERM","wxt")}} in Octave. To make this the standard behavior append both commands in one of Octave's startup files e.g. your {{Codeline|~/.octaverc}}. To close the graphic window of gnuplot use the Octave command {{Codeline|close()}} to get rid of the Gnuplot instance instead of using the close button of the window.</s><br />
*The first plot after startuing Octave 4 can last a while.<br />
<br />
====Detailed Installation Instructions====<br />
To get detailed instructions from start to end on one page, refer [http://blog.hani-ibrahim.de/en/octave4-mac-os-x-el-capitan-install.html Hani's Omnium Gatherum].<br />
<br />
====Update problems====<br />
If an update fails you may chosen incompatible variants in a prior installation. See [http://blog.hani-ibrahim.de/en/octave4-upgrade-via-macports.html Octave 4 upgrade via MacPorts fails after “port upgrade outdated”] for details<br />
<br />
===Homebrew===<br />
<br />
Homebrew is a package management system that simplifies the installation of software on Mac OS X. It is a free/open source software project to simplify installation of other free/open source software. It is similar in aim and function to MacPorts and Fink. It was written by Max Howell and has gained popularity in the Ruby on Rails community and earned praise for its extensibility.<br />
<br />
====Simple Installation Instructions====<br />
<br />
First, install Homebrew:<br />
*Install Xcode via the Mac App Store.<br />
** For Mac OS 10.9 (Mavericks) install the command line tools by {{Codeline|xcode-select --install}}.<br />
** For earlier versions of Mac OS, install the command line tools from Xcode's Apple Menu > Preferences > Downloads.<br />
*Follow [https://github.com/mxcl/homebrew/wiki/installation Homebrew's installation instructions].<br />
* If running Mountain Lion (Mac OS 10.8) or later, install [https://xquartz.macosforge.org/landing/ XQuartz].<br />
* Import the scientific computing packages, including Octave:<br />
<pre>brew tap homebrew/science</pre><br />
<br />
To install Octave, update to the latest package definitions, install {{Codeline|gfortran}} (Now you don't need to install it manually, it would be installed by dependency), and then Octave:<br />
<pre>brew update && brew upgrade<br />
brew install octave</pre><br />
This would install octave with the default dependencies. Note that the default dependencies include java runtime environment. If you do not have java installed, homebrew would guide you to do that. Or you can type {{Codeline|brew install octave --without-java}} to remove its dependency on java.<br />
<br />
Note: If brew complains about:<br />
<pre><br />
Linking /usr/local/Cellar/ghostscript/9.14...<br />
Error: Could not symlink share/ghostscript/Resource<br />
/usr/local/share/ghostscript is not writable.<br />
</pre><br />
This is telling you the user permissions for ghostscript are not setup in a way that your user profile can use. You need to change those permissions to your user profile.<br />
The following command will repair the issue:<br />
<pre><br />
sudo chown -R `whoami` /usr/local/share/ghostscript<br />
brew link --overwrite ghostscript<br />
</pre><br />
Then run the brew install command again for octave.<br />
<br />
Note: If brew complains about not having a formula for octave, the following command should fix it:<br />
<pre>brew tap --repair</pre><br />
<br />
The command below upgrades Octave and its dependencies to the latest Homebrew-supported versions:<br />
<pre>brew update && brew upgrade</pre><br />
<br />
Octave has many dependencies which will be downloaded and installed prior to Octave. The entire installation process can take a few hours, but precompiled binary packages called 'bottles' are available with default options for Octave and many of its dependencies.<br />
<br />
Octave has an experimental built-in GUI (developed using Qt lib) installed by default so that gnuplot and other tools could use it directly. Gnuplot will build with Qt support if Octave's Qt-based GUI is enabled. You do not need to install an X server in most situations. Note: On Snow Leopard, Octave requires an X server. If you install without, Homebrew will guide you to the XQuartz project (https://xquartz.macosforge.org) where you can download this.<br />
<br />
You might find that you need to add:<br />
<br />
<pre>setenv ("GNUTERM", "X11")</pre><br />
<br />
to your octaverc file, normally located at {{Codeline|/usr/local/share/octave/site/m/startup}}. See also {{Codeline|brew info octave}} for recommended settings.<br />
<br />
In case of trouble, see the [https://github.com/mxcl/homebrew/wiki/troubleshooting Homebrew Troubleshooting Guide], which assists in diagnosing problems and craft useful bug reports. The [http://jatinganhotra.com/blog/2014/01/21/installing-octave-on-os-x-10-dot-9-mavericks/ post by Jatin Ganhotra] may also be helpful. Bugs may be reported at [https://github.com/Homebrew/homebrew-science/issues?state=open Homebrew-science's issue tracker].<br />
<br />
====Using Aquaterm with Gnuplot====<br />
When using {{Codeline|gnuplot}} as the graphics toolkit, if the {{Codeline|aqua}} terminal is not supported by {{Codeline|gnuplot}}, follow the steps below to resolve the problem.<br />
<br />
*Uninstall {{Codeline|gnuplot}}<br />
<pre>brew uninstall gnuplot</pre><br />
*Install [http://aquaterm.sourceforge.net Aquaterm]<br />
*Install {{Codeline|gnuplot}}<br />
<pre>brew install gnuplot --with-aquaterm --with-qt4</pre><br />
<br />
==Create a launcher app with AppleScript==<br />
<br />
* Open the "AppleScript Editor" application<br />
* write the following text in the editor window:<br />
<br />
tell application "Terminal"<br />
do script "/path/to/octave; exit"<br />
end tell<br />
<br />
or if Octave is in your default path:<br />
<br />
tell application "Terminal"<br />
do script "`which octave`; exit"<br />
end tell<br />
<br />
or if you wish to start the GUI by default, without a terminal:<br />
<br />
do shell script "/path/to/octave --force-gui"<br />
<br />
(e.g. Homebrew installs Octave to '/usr/local/bin/octave' by default)<br />
<br />
* Select "Save as ..." from the "File" menu<br />
* In the menu that appears, select "Application" from the "File format" menu, then navigate to the "Applications" folder and save your script there as "Octave.app"<br />
<br />
To change the application icon <br />
<br />
* Open [http://wiki.octave.org/File:Icon.png this link] in a web browser, right-click and select "copy image".<br />
* Select "Octave.app" in the Finder, then press command-i to bring up the file info dialog.<br />
* In the file info dialog, select the icon (in the top left) and press command-v to paste the Octave icon over it.<br />
<br />
[[Category:Installation]]<br />
[[Category:Macintosh platform]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Image_package&diff=10313Image package2017-04-13T13:25:41Z<p>Carandraug: /* Missing functions */ there is dither (not imdither) but that is a missing function in core (not the image package)</p>
<hr />
<div>The {{Forge|image|image package}} is part of the octave-forge project. See its {{Forge|image|homepage}} for the latest release.<br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
=== Roadmap ===<br />
<br />
The following are missing targets for the next minor release of the image package (version 2.8.0). Small bug fixes, build fixes, and regressions may still be released before in a patch release (Version 2.6.X).<br />
<br />
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}}) ([http://hg.code.sf.net/p/octave/image/rev/7cf22a478792 done])<br />
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with labeled == labelid)<br />
* support passing {{codeline|bwconncomp}} output to {{codeline|regionprops}} (and then fix {{codeline|bwpropfilt}} to use that instead of a labeled image)<br />
* ND support on {{codeline|imfilter}}<br />
* check if {{codeline|normxcorr2}} is Matlab compatible and investigate making use of {{codeline|fftconvn}} since it's likely to receive large input<br />
* investigate implementing the missing deconvolution functions (see patch {{patch|8571}})<br />
* anything else that is done or submitted before the above are done<br />
<br />
=== Missing functions ===<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* activecontour<br />
* adapthisteq<br />
* affine2d<br />
* affine3d<br />
* applycform<br />
* axes2pix<br />
* bwconvhull<br />
* bwdistgeodesic<br />
* bwlookup<br />
* bwpack<br />
* bwtraceboundary<br />
* bwulterode<br />
* bwunpack<br />
* convmtx2<br />
* corner<br />
* cornermetric<br />
* cpcorr<br />
* cpselect<br />
* cpstruct2pairs<br />
* dct2<br />
* dctmtx<br />
* deconvblind<br />
* deconvlucy<br />
* deconvreg<br />
* deconvwnr<br />
* decorrstretch<br />
* demosaic<br />
* dicomanon<br />
* dicomdisp<br />
* dicomuid<br />
* dpxread<br />
* dpxinfo<br />
* fan2para<br />
* fanbeam<br />
* fliptform<br />
* freqz2<br />
* fsamp2<br />
* ftrans2<br />
* fwind1<br />
* fwind2<br />
* gabor<br />
* getimage<br />
* getimagemodel<br />
* getline<br />
* getpts<br />
* getrect<br />
* gradientweight<br />
* graycoprops<br />
* grayconnected<br />
* graydiffweight<br />
* hdrread<br />
* hdrwrite<br />
* houghlines -- (see hough_line)<br />
* houghpeaks<br />
* iccfind<br />
* iccread<br />
* iccroot<br />
* iccwrite<br />
* idct2<br />
* ifanbeam<br />
* im2java2d<br />
* ImageAdapter<br />
* imageinfo<br />
* imapplymatrix<br />
* imapprox<br />
* imboxfilt<br />
* imboxfilt3<br />
* imcolormaptool<br />
* imcontour<br />
* imcontrast<br />
* imdisplayrange<br />
* imdistline<br />
* imellipse<br />
* imextendedmax<br />
* imextendedmin<br />
* imfindcircles<br />
* imfreehand<br />
* imfuse<br />
* imgaborfilt<br />
* imgaussfilt<br />
* imgaussfilt3<br />
* imgca<br />
* imgcf<br />
* imguidedfilter<br />
* imhandles<br />
* imhistmatch<br />
* imhmax<br />
* imhmin<br />
* imimposemin<br />
* imline<br />
* immagbox<br />
* immovie<br />
* imoverview<br />
* imoverviewpanel<br />
* impixelinfo<br />
* impixelinfoval<br />
* impixelregionpanel<br />
* impixelregion<br />
* implay<br />
* impoint<br />
* impoly<br />
* improfile<br />
* imrect<br />
* imref2d<br />
* imref3d<br />
* imregconfig<br />
* imregcorr<br />
* imregdemons<br />
* imregister<br />
* imregtform<br />
* imroi<br />
* imscrollpanel<br />
* imsegfmm<br />
* imseggeodesic<br />
* imshowpair<br />
* imtool<br />
* imwarp<br />
* integralBoxFilter<br />
* integralBoxFilter3<br />
* integralImage<br />
* integralImage3<br />
* interfileinfo<br />
* interfileread<br />
* iptaddcallback<br />
* iptcheckhandle<br />
* iptgetapi<br />
* iptGetPointerBehavior<br />
* iptgetpref<br />
* ipticondir<br />
* iptPointerManager<br />
* iptprefs<br />
* iptremovecallback<br />
* iptSetPointerBehavior<br />
* iptsetpref<br />
* iptwindowalign<br />
* isicc<br />
* isrset<br />
* makecform<br />
* makeConstrainToRectFcn<br />
* makehdr<br />
* makeresampler<br />
* multithresh<br />
* nitfinfo<br />
* nitfread<br />
* openrset<br />
* para2fan<br />
* projective2d<br />
* regionfill<br />
* roifill<br />
* roifilt2<br />
* roipoly<br />
* rsetwrite<br />
* ssim<br />
* tformarray<br />
* tonemap<br />
* truesize<br />
* visboundaries<br />
* viscircles<br />
* warp<br />
* whitepoint<br />
* wiener2<br />
* xyz2double<br />
* xyz2uint16<br />
</div><br />
<br />
=== Different functions ===<br />
<br />
* with version 2014a, Matlab introduced a new function imtranslate. This function was part of Octave's package since 2002 but Matlab version is completely different. It needs to be rewritten for Matlab compatibility.<br />
<br />
=== Missing options ===<br />
<br />
* @strel<br />
** missing SE decomposition for the diamond shape<br />
** approximation argument for the ball and disk shapes are not implemented<br />
** the translate method is not yet implemented<br />
* blockproc<br />
** The name-value input arguments have not yet been implemented.<br />
* colfilt<br />
** the option to split the image in smaller blocks before performing the im2col and filtering is ignored. Since that option only allows to use less memory and has no effect on the output is only important for sliding filtering with big blocks size.<br />
* impixel<br />
** interactive selection of points (less than 2 input arguments) is not yet implemented. Ability to create such UIs needs to be implemented in Octave core first.<br />
* imcrop<br />
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.<br />
* imwrap<br />
** no supports for SmoothEdges option<br />
* hough<br />
** no RhoResolution option<br />
<br />
=== Contributing ===<br />
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.<br />
<br />
=== Open Bugs ===<br />
<br />
{| class="wikitable" <br />
|-<br />
! bug !! bug title !! status<br />
|-<br />
| {{bug|38085}} || image package: fails to build with --enable-64 (entropyfilt) || Confirmed <br />
|-<br />
| {{bug|38087}}|| image package: graycomatrix incompatibilities with matlab || None<br />
|-<br />
| {{bug|38345}}|| image package: __spatial_filtering__() always returns class double || Confirmed<br />
|-<br />
| {{bug|41674}}|| image package: temporary arrays in imresize are doubles || None<br />
|-<br />
| {{bug|43218}}|| image package: imshear causes more signal spread than expected and inconsistent vertical offset || None<br />
|-<br />
| {{bug|44396}}|| image package: bwmorph shrink does not preserve Euler number || Confirmed<br />
|-<br />
| {{bug|44799}}|| image package: imrotate chrashes when using 'spline' as interpolation method || Confirmed<br />
|-<br />
| {{bug|44831}}|| image package: imrotate - different dimensions of output matrix || Confirmed<br />
|-<br />
| {{bug|45088}}|| image package: rangefilt requires domain and image to have equal number of dimensions || Patch Reviewed<br />
|-<br />
| {{bug|46745}}|| image package: imresize default method (bicubic) Matlab incompatible for the border pixels|| None<br />
|-<br />
| {{bug|47115}}|| label2rgb from image-package doesn't work for labels with value above the uint16 limit|| Confirmed<br />
|-<br />
| {{bug|48529}}|| image package: compilation warnings under Mac OSX|| None<br />
|-<br />
| {{bug|48794}}|| image package: imreconstruct should clip marker > mask|| None<br />
|-<br />
| {{bug|49613}}|| image package - regionprops.m majoraxislength broken|| Patch Submitted<br />
|-<br />
| {{bug|50071}}|| OF image: bwfill(...,4) in Octave behaves like bwfill(...,8) in MATLAB and vice versa|| None<br />
|-<br />
| {{bug|50151}}|| image package: normxcorr2 is not compatible with Matlab|| None<br />
|-<br />
| {{bug|50188}}|| image package: poly2mask does incompatible rounding|| None<br />
|-<br />
| {{bug|50257}}|| image package: imtranslate is not Matlab compatible|| Confirmed<br />
|-<br />
| {{bug|50341}}|| Missing Function imrect in image package|| None<br />
|-<br />
| {{bug|50429}}|| image package: xyz2lab changed slightly in Matlab (and other color conversion functions)|| None <br />
|-<br />
| {{bug|50656}}|| image package: bwerode does not return right size when there's more dimensions on conn || None<br />
|-<br />
| {{bug|50708}}|| image package: add demosaic.m|| Patch Submitted<br />
|-<br />
| {{bug|50732}} || Image package: infinite error loop when assigning a strel (class) object to a vector|| Confirmed<br />
|-<br />
|}<br />
<br />
=== Patches ===<br />
<br />
* {{patch|8059}}: [new function for image package] ranktf.m<br />
* {{patch|8060}}: [image package new function] whitepoint.m<br />
* {{patch|8722}}: implement impixelinfo and impixelinfoval<br />
* {{patch|8813}}: image package: Extended image I/O for Analyze 7.5 format to handle big-endian images<br />
* {{patch|8866}}: image package: add metainfo.xml file for Gnome Software<br />
* {{patch|8571}}: image package: three deconvolution routines (Wiener, RL, RLTV)<br />
* {{patch|8824}}: added affine2d class<br />
* {{patch|9235}}: image package: improve filtering functions (stdfilt, entropyfilt) and add tests (also medfilt2, ordfilt2, rangefilt)<br />
* {{patch|9244}}: image package: regionprops.m - new properties ConvexHull, ConvexImage, ConvexArea, Solidity<br />
[[Category:Octave-Forge]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Image_package&diff=10309Image package2017-04-12T13:28:02Z<p>Carandraug: /* Open Bugs */ remove fixed {{bug|45333}} image package: grayhresh fails if input doesn't have different values</p>
<hr />
<div>The {{Forge|image|image package}} is part of the octave-forge project. See its {{Forge|image|homepage}} for the latest release.<br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
=== Roadmap ===<br />
<br />
The following are missing targets for the next minor release of the image package (version 2.8.0). Small bug fixes, build fixes, and regressions may still be released before in a patch release (Version 2.6.X).<br />
<br />
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}}) ([http://hg.code.sf.net/p/octave/image/rev/7cf22a478792 done])<br />
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with labeled == labelid)<br />
* support passing {{codeline|bwconncomp}} output to {{codeline|regionprops}} (and then fix {{codeline|bwpropfilt}} to use that instead of a labeled image)<br />
* ND support on {{codeline|imfilter}}<br />
* check if {{codeline|normxcorr2}} is Matlab compatible and investigate making use of {{codeline|fftconvn}} since it's likely to receive large input<br />
* investigate implementing the missing deconvolution functions (see patch {{patch|8571}})<br />
* anything else that is done or submitted before the above are done<br />
<br />
=== Missing functions ===<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* activecontour<br />
* adapthisteq<br />
* affine2d<br />
* affine3d<br />
* applycform<br />
* axes2pix<br />
* bwconvhull<br />
* bwdistgeodesic<br />
* bwlookup<br />
* bwpack<br />
* bwtraceboundary<br />
* bwulterode<br />
* bwunpack<br />
* convmtx2<br />
* corner<br />
* cornermetric<br />
* cpcorr<br />
* cpselect<br />
* cpstruct2pairs<br />
* dct2<br />
* dctmtx<br />
* deconvblind<br />
* deconvlucy<br />
* deconvreg<br />
* deconvwnr<br />
* decorrstretch<br />
* demosaic<br />
* dicomanon<br />
* dicomdisp<br />
* dicomuid<br />
* dpxread<br />
* dpxinfo<br />
* fan2para<br />
* fanbeam<br />
* fliptform<br />
* freqz2<br />
* fsamp2<br />
* ftrans2<br />
* fwind1<br />
* fwind2<br />
* gabor<br />
* getimage<br />
* getimagemodel<br />
* getline<br />
* getpts<br />
* getrect<br />
* gradientweight<br />
* graycoprops<br />
* grayconnected<br />
* graydiffweight<br />
* hdrread<br />
* hdrwrite<br />
* houghlines -- (see hough_line)<br />
* houghpeaks<br />
* iccfind<br />
* iccread<br />
* iccroot<br />
* iccwrite<br />
* idct2<br />
* ifanbeam<br />
* im2java2d<br />
* ImageAdapter<br />
* imageinfo<br />
* imapplymatrix<br />
* imapprox<br />
* imboxfilt<br />
* imboxfilt3<br />
* imcolormaptool<br />
* imcontour<br />
* imcontrast<br />
* imdisplayrange<br />
* imdistline<br />
* imellipse<br />
* imextendedmax<br />
* imextendedmin<br />
* imfindcircles<br />
* imfreehand<br />
* imfuse<br />
* imgaborfilt<br />
* imgaussfilt<br />
* imgaussfilt3<br />
* imgca<br />
* imgcf<br />
* imguidedfilter<br />
* imhandles<br />
* imhistmatch<br />
* imhmax<br />
* imhmin<br />
* imimposemin<br />
* imline<br />
* immagbox<br />
* immovie<br />
* imoverview<br />
* imoverviewpanel<br />
* impixelinfo<br />
* impixelinfoval<br />
* impixelregionpanel<br />
* impixelregion<br />
* implay<br />
* impoint<br />
* impoly<br />
* improfile<br />
* imrect<br />
* imref2d<br />
* imref3d<br />
* imregconfig<br />
* imregcorr<br />
* imregdemons<br />
* imregister<br />
* imregtform<br />
* imroi<br />
* imscrollpanel<br />
* imsegfmm<br />
* imseggeodesic<br />
* imsharpen<br />
* imshowpair<br />
* imtool<br />
* imwarp<br />
* integralBoxFilter<br />
* integralBoxFilter3<br />
* integralImage<br />
* integralImage3<br />
* interfileinfo<br />
* interfileread<br />
* iptaddcallback<br />
* iptcheckhandle<br />
* iptgetapi<br />
* iptGetPointerBehavior<br />
* iptgetpref<br />
* ipticondir<br />
* iptPointerManager<br />
* iptprefs<br />
* iptremovecallback<br />
* iptSetPointerBehavior<br />
* iptsetpref<br />
* iptwindowalign<br />
* isicc<br />
* isrset<br />
* makecform<br />
* makeConstrainToRectFcn<br />
* makehdr<br />
* makeresampler<br />
* multithresh<br />
* nitfinfo<br />
* nitfread<br />
* openrset<br />
* para2fan<br />
* projective2d<br />
* regionfill<br />
* roifill<br />
* roifilt2<br />
* roipoly<br />
* rsetwrite<br />
* ssim<br />
* tformarray<br />
* tonemap<br />
* truesize<br />
* visboundaries<br />
* viscircles<br />
* warp<br />
* whitepoint<br />
* wiener2<br />
* xyz2double<br />
* xyz2uint16<br />
</div><br />
<br />
=== Different functions ===<br />
<br />
* with version 2014a, Matlab introduced a new function imtranslate. This function was part of Octave's package since 2002 but Matlab version is completely different. It needs to be rewritten for Matlab compatibility.<br />
<br />
=== Missing options ===<br />
<br />
* @strel<br />
** missing SE decomposition for the diamond shape<br />
** approximation argument for the ball and disk shapes are not implemented<br />
** the translate method is not yet implemented<br />
* blockproc<br />
** The name-value input arguments have not yet been implemented.<br />
* colfilt<br />
** the option to split the image in smaller blocks before performing the im2col and filtering is ignored. Since that option only allows to use less memory and has no effect on the output is only important for sliding filtering with big blocks size.<br />
* impixel<br />
** interactive selection of points (less than 2 input arguments) is not yet implemented. Ability to create such UIs needs to be implemented in Octave core first.<br />
* imcrop<br />
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.<br />
* imwrap<br />
** no supports for SmoothEdges option<br />
* hough<br />
** no RhoResolution option<br />
<br />
=== Contributing ===<br />
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.<br />
<br />
=== Open Bugs ===<br />
<br />
{| class="wikitable" <br />
|-<br />
! bug !! bug title !! status<br />
|-<br />
| {{bug|38085}} || image package: fails to build with --enable-64 (entropyfilt) || Confirmed <br />
|-<br />
| {{bug|38087}}|| image package: graycomatrix incompatibilities with matlab || None<br />
|-<br />
| {{bug|38345}}|| image package: __spatial_filtering__() always returns class double || Confirmed<br />
|-<br />
| {{bug|41674}}|| image package: temporary arrays in imresize are doubles || None<br />
|-<br />
| {{bug|43218}}|| image package: imshear causes more signal spread than expected and inconsistent vertical offset || None<br />
|-<br />
| {{bug|44396}}|| image package: bwmorph shrink does not preserve Euler number || Confirmed<br />
|-<br />
| {{bug|44799}}|| image package: imrotate chrashes when using 'spline' as interpolation method || Confirmed<br />
|-<br />
| {{bug|44831}}|| image package: imrotate - different dimensions of output matrix || Confirmed<br />
|-<br />
| {{bug|45088}}|| image package: rangefilt requires domain and image to have equal number of dimensions || Patch Reviewed<br />
|-<br />
| {{bug|46745}}|| image package: imresize default method (bicubic) Matlab incompatible for the border pixels|| None<br />
|-<br />
| {{bug|47115}}|| label2rgb from image-package doesn't work for labels with value above the uint16 limit|| Confirmed<br />
|-<br />
| {{bug|48529}}|| image package: compilation warnings under Mac OSX|| None<br />
|-<br />
| {{bug|48794}}|| image package: imreconstruct should clip marker > mask|| None<br />
|-<br />
| {{bug|49613}}|| image package - regionprops.m majoraxislength broken|| Patch Submitted<br />
|-<br />
| {{bug|50071}}|| OF image: bwfill(...,4) in Octave behaves like bwfill(...,8) in MATLAB and vice versa|| None<br />
|-<br />
| {{bug|50151}}|| image package: normxcorr2 is not compatible with Matlab|| None<br />
|-<br />
| {{bug|50188}}|| image package: poly2mask does incompatible rounding|| None<br />
|-<br />
| {{bug|50257}}|| image package: imtranslate is not Matlab compatible|| Confirmed<br />
|-<br />
| {{bug|50341}}|| Missing Function imrect in image package|| None<br />
|-<br />
| {{bug|50429}}|| image package: xyz2lab changed slightly in Matlab (and other color conversion functions)|| None <br />
|-<br />
| {{bug|50656}}|| image package: bwerode does not return right size when there's more dimensions on conn || None<br />
|-<br />
| {{bug|50708}}|| image package: add demosaic.m|| Patch Submitted<br />
|-<br />
| {{bug|50732}} || Image package: infinite error loop when assigning a strel (class) object to a vector|| Confirmed<br />
|-<br />
|}<br />
<br />
=== Patches ===<br />
<br />
* {{patch|8059}}: [new function for image package] ranktf.m<br />
* {{patch|8060}}: [image package new function] whitepoint.m<br />
* {{patch|8722}}: implement impixelinfo and impixelinfoval<br />
* {{patch|8813}}: image package: Extended image I/O for Analyze 7.5 format to handle big-endian images<br />
* {{patch|8866}}: image package: add metainfo.xml file for Gnome Software<br />
* {{patch|8571}}: image package: three deconvolution routines (Wiener, RL, RLTV)<br />
* {{patch|8824}}: added affine2d class<br />
* {{patch|9235}}: image package: improve filtering functions (stdfilt, entropyfilt) and add tests (also medfilt2, ordfilt2, rangefilt)<br />
* {{patch|9244}}: image package: regionprops.m - new properties ConvexHull, ConvexImage, ConvexArea, Solidity<br />
[[Category:Octave-Forge]]<br />
* {{patch|9281}}: Image package: imsharpen</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Image_package&diff=10308Image package2017-04-12T12:52:22Z<p>Carandraug: /* Open Bugs */ remove won't fix {{bug|41768}} imdither() calls imwrite() in the wrong way (Package: image)</p>
<hr />
<div>The {{Forge|image|image package}} is part of the octave-forge project. See its {{Forge|image|homepage}} for the latest release.<br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
=== Roadmap ===<br />
<br />
The following are missing targets for the next minor release of the image package (version 2.8.0). Small bug fixes, build fixes, and regressions may still be released before in a patch release (Version 2.6.X).<br />
<br />
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}}) ([http://hg.code.sf.net/p/octave/image/rev/7cf22a478792 done])<br />
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with labeled == labelid)<br />
* support passing {{codeline|bwconncomp}} output to {{codeline|regionprops}} (and then fix {{codeline|bwpropfilt}} to use that instead of a labeled image)<br />
* ND support on {{codeline|imfilter}}<br />
* check if {{codeline|normxcorr2}} is Matlab compatible and investigate making use of {{codeline|fftconvn}} since it's likely to receive large input<br />
* investigate implementing the missing deconvolution functions (see patch {{patch|8571}})<br />
* anything else that is done or submitted before the above are done<br />
<br />
=== Missing functions ===<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* activecontour<br />
* adapthisteq<br />
* affine2d<br />
* affine3d<br />
* applycform<br />
* axes2pix<br />
* bwconvhull<br />
* bwdistgeodesic<br />
* bwlookup<br />
* bwpack<br />
* bwtraceboundary<br />
* bwulterode<br />
* bwunpack<br />
* convmtx2<br />
* corner<br />
* cornermetric<br />
* cpcorr<br />
* cpselect<br />
* cpstruct2pairs<br />
* dct2<br />
* dctmtx<br />
* deconvblind<br />
* deconvlucy<br />
* deconvreg<br />
* deconvwnr<br />
* decorrstretch<br />
* demosaic<br />
* dicomanon<br />
* dicomdisp<br />
* dicomuid<br />
* dpxread<br />
* dpxinfo<br />
* fan2para<br />
* fanbeam<br />
* fliptform<br />
* freqz2<br />
* fsamp2<br />
* ftrans2<br />
* fwind1<br />
* fwind2<br />
* gabor<br />
* getimage<br />
* getimagemodel<br />
* getline<br />
* getpts<br />
* getrect<br />
* gradientweight<br />
* graycoprops<br />
* grayconnected<br />
* graydiffweight<br />
* hdrread<br />
* hdrwrite<br />
* houghlines -- (see hough_line)<br />
* houghpeaks<br />
* iccfind<br />
* iccread<br />
* iccroot<br />
* iccwrite<br />
* idct2<br />
* ifanbeam<br />
* im2java2d<br />
* ImageAdapter<br />
* imageinfo<br />
* imapplymatrix<br />
* imapprox<br />
* imboxfilt<br />
* imboxfilt3<br />
* imcolormaptool<br />
* imcontour<br />
* imcontrast<br />
* imdisplayrange<br />
* imdistline<br />
* imellipse<br />
* imextendedmax<br />
* imextendedmin<br />
* imfindcircles<br />
* imfreehand<br />
* imfuse<br />
* imgaborfilt<br />
* imgaussfilt<br />
* imgaussfilt3<br />
* imgca<br />
* imgcf<br />
* imguidedfilter<br />
* imhandles<br />
* imhistmatch<br />
* imhmax<br />
* imhmin<br />
* imimposemin<br />
* imline<br />
* immagbox<br />
* immovie<br />
* imoverview<br />
* imoverviewpanel<br />
* impixelinfo<br />
* impixelinfoval<br />
* impixelregionpanel<br />
* impixelregion<br />
* implay<br />
* impoint<br />
* impoly<br />
* improfile<br />
* imrect<br />
* imref2d<br />
* imref3d<br />
* imregconfig<br />
* imregcorr<br />
* imregdemons<br />
* imregister<br />
* imregtform<br />
* imroi<br />
* imscrollpanel<br />
* imsegfmm<br />
* imseggeodesic<br />
* imsharpen<br />
* imshowpair<br />
* imtool<br />
* imwarp<br />
* integralBoxFilter<br />
* integralBoxFilter3<br />
* integralImage<br />
* integralImage3<br />
* interfileinfo<br />
* interfileread<br />
* iptaddcallback<br />
* iptcheckhandle<br />
* iptgetapi<br />
* iptGetPointerBehavior<br />
* iptgetpref<br />
* ipticondir<br />
* iptPointerManager<br />
* iptprefs<br />
* iptremovecallback<br />
* iptSetPointerBehavior<br />
* iptsetpref<br />
* iptwindowalign<br />
* isicc<br />
* isrset<br />
* makecform<br />
* makeConstrainToRectFcn<br />
* makehdr<br />
* makeresampler<br />
* multithresh<br />
* nitfinfo<br />
* nitfread<br />
* openrset<br />
* para2fan<br />
* projective2d<br />
* regionfill<br />
* roifill<br />
* roifilt2<br />
* roipoly<br />
* rsetwrite<br />
* ssim<br />
* tformarray<br />
* tonemap<br />
* truesize<br />
* visboundaries<br />
* viscircles<br />
* warp<br />
* whitepoint<br />
* wiener2<br />
* xyz2double<br />
* xyz2uint16<br />
</div><br />
<br />
=== Different functions ===<br />
<br />
* with version 2014a, Matlab introduced a new function imtranslate. This function was part of Octave's package since 2002 but Matlab version is completely different. It needs to be rewritten for Matlab compatibility.<br />
<br />
=== Missing options ===<br />
<br />
* @strel<br />
** missing SE decomposition for the diamond shape<br />
** approximation argument for the ball and disk shapes are not implemented<br />
** the translate method is not yet implemented<br />
* blockproc<br />
** The name-value input arguments have not yet been implemented.<br />
* colfilt<br />
** the option to split the image in smaller blocks before performing the im2col and filtering is ignored. Since that option only allows to use less memory and has no effect on the output is only important for sliding filtering with big blocks size.<br />
* impixel<br />
** interactive selection of points (less than 2 input arguments) is not yet implemented. Ability to create such UIs needs to be implemented in Octave core first.<br />
* imcrop<br />
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.<br />
* imwrap<br />
** no supports for SmoothEdges option<br />
* hough<br />
** no RhoResolution option<br />
<br />
=== Contributing ===<br />
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.<br />
<br />
=== Open Bugs ===<br />
<br />
{| class="wikitable" <br />
|-<br />
! bug !! bug title !! status<br />
|-<br />
| {{bug|38085}} || image package: fails to build with --enable-64 (entropyfilt) || Confirmed <br />
|-<br />
| {{bug|38087}}|| image package: graycomatrix incompatibilities with matlab || None<br />
|-<br />
| {{bug|38345}}|| image package: __spatial_filtering__() always returns class double || Confirmed<br />
|-<br />
| {{bug|41674}}|| image package: temporary arrays in imresize are doubles || None<br />
|-<br />
| {{bug|43218}}|| image package: imshear causes more signal spread than expected and inconsistent vertical offset || None<br />
|-<br />
| {{bug|44396}}|| image package: bwmorph shrink does not preserve Euler number || Confirmed<br />
|-<br />
| {{bug|44799}}|| image package: imrotate chrashes when using 'spline' as interpolation method || Confirmed<br />
|-<br />
| {{bug|44831}}|| image package: imrotate - different dimensions of output matrix || Confirmed<br />
|-<br />
| {{bug|45088}}|| image package: rangefilt requires domain and image to have equal number of dimensions || Patch Reviewed<br />
|-<br />
| {{bug|45333}}|| image package: grayhresh fails if input doesn't have different values|| Patch Submitted<br />
|-<br />
| {{bug|46745}}|| image package: imresize default method (bicubic) Matlab incompatible for the border pixels|| None<br />
|-<br />
| {{bug|47115}}|| label2rgb from image-package doesn't work for labels with value above the uint16 limit|| Confirmed<br />
|-<br />
| {{bug|48529}}|| image package: compilation warnings under Mac OSX|| None<br />
|-<br />
| {{bug|48794}}|| image package: imreconstruct should clip marker > mask|| None<br />
|-<br />
| {{bug|49613}}|| image package - regionprops.m majoraxislength broken|| Patch Submitted<br />
|-<br />
| {{bug|50071}}|| OF image: bwfill(...,4) in Octave behaves like bwfill(...,8) in MATLAB and vice versa|| None<br />
|-<br />
| {{bug|50151}}|| image package: normxcorr2 is not compatible with Matlab|| None<br />
|-<br />
| {{bug|50188}}|| image package: poly2mask does incompatible rounding|| None<br />
|-<br />
| {{bug|50257}}|| image package: imtranslate is not Matlab compatible|| Confirmed<br />
|-<br />
| {{bug|50341}}|| Missing Function imrect in image package|| None<br />
|-<br />
| {{bug|50429}}|| image package: xyz2lab changed slightly in Matlab (and other color conversion functions)|| None <br />
|-<br />
| {{bug|50656}}|| image package: bwerode does not return right size when there's more dimensions on conn || None<br />
|-<br />
| {{bug|50708}}|| image package: add demosaic.m|| Patch Submitted<br />
|-<br />
| {{bug|50732}} || Image package: infinite error loop when assigning a strel (class) object to a vector|| Confirmed<br />
|-<br />
|}<br />
<br />
=== Patches ===<br />
<br />
* {{patch|8059}}: [new function for image package] ranktf.m<br />
* {{patch|8060}}: [image package new function] whitepoint.m<br />
* {{patch|8722}}: implement impixelinfo and impixelinfoval<br />
* {{patch|8813}}: image package: Extended image I/O for Analyze 7.5 format to handle big-endian images<br />
* {{patch|8866}}: image package: add metainfo.xml file for Gnome Software<br />
* {{patch|8571}}: image package: three deconvolution routines (Wiener, RL, RLTV)<br />
* {{patch|8824}}: added affine2d class<br />
* {{patch|9235}}: image package: improve filtering functions (stdfilt, entropyfilt) and add tests (also medfilt2, ordfilt2, rangefilt)<br />
* {{patch|9244}}: image package: regionprops.m - new properties ConvexHull, ConvexImage, ConvexArea, Solidity<br />
[[Category:Octave-Forge]]<br />
* {{patch|9281}}: Image package: imsharpen</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Image_package&diff=10307Image package2017-04-12T12:38:02Z<p>Carandraug: /* Open Bugs */ remove fixed {{bug|50122}} image package: normxcorr2 sometimes returns inf values</p>
<hr />
<div>The {{Forge|image|image package}} is part of the octave-forge project. See its {{Forge|image|homepage}} for the latest release.<br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
=== Roadmap ===<br />
<br />
The following are missing targets for the next minor release of the image package (version 2.8.0). Small bug fixes, build fixes, and regressions may still be released before in a patch release (Version 2.6.X).<br />
<br />
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}}) ([http://hg.code.sf.net/p/octave/image/rev/7cf22a478792 done])<br />
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with labeled == labelid)<br />
* support passing {{codeline|bwconncomp}} output to {{codeline|regionprops}} (and then fix {{codeline|bwpropfilt}} to use that instead of a labeled image)<br />
* ND support on {{codeline|imfilter}}<br />
* check if {{codeline|normxcorr2}} is Matlab compatible and investigate making use of {{codeline|fftconvn}} since it's likely to receive large input<br />
* investigate implementing the missing deconvolution functions (see patch {{patch|8571}})<br />
* anything else that is done or submitted before the above are done<br />
<br />
=== Missing functions ===<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* activecontour<br />
* adapthisteq<br />
* affine2d<br />
* affine3d<br />
* applycform<br />
* axes2pix<br />
* bwconvhull<br />
* bwdistgeodesic<br />
* bwlookup<br />
* bwpack<br />
* bwtraceboundary<br />
* bwulterode<br />
* bwunpack<br />
* convmtx2<br />
* corner<br />
* cornermetric<br />
* cpcorr<br />
* cpselect<br />
* cpstruct2pairs<br />
* dct2<br />
* dctmtx<br />
* deconvblind<br />
* deconvlucy<br />
* deconvreg<br />
* deconvwnr<br />
* decorrstretch<br />
* demosaic<br />
* dicomanon<br />
* dicomdisp<br />
* dicomuid<br />
* dpxread<br />
* dpxinfo<br />
* fan2para<br />
* fanbeam<br />
* fliptform<br />
* freqz2<br />
* fsamp2<br />
* ftrans2<br />
* fwind1<br />
* fwind2<br />
* gabor<br />
* getimage<br />
* getimagemodel<br />
* getline<br />
* getpts<br />
* getrect<br />
* gradientweight<br />
* graycoprops<br />
* grayconnected<br />
* graydiffweight<br />
* hdrread<br />
* hdrwrite<br />
* houghlines -- (see hough_line)<br />
* houghpeaks<br />
* iccfind<br />
* iccread<br />
* iccroot<br />
* iccwrite<br />
* idct2<br />
* ifanbeam<br />
* im2java2d<br />
* ImageAdapter<br />
* imageinfo<br />
* imapplymatrix<br />
* imapprox<br />
* imboxfilt<br />
* imboxfilt3<br />
* imcolormaptool<br />
* imcontour<br />
* imcontrast<br />
* imdisplayrange<br />
* imdistline<br />
* imellipse<br />
* imextendedmax<br />
* imextendedmin<br />
* imfindcircles<br />
* imfreehand<br />
* imfuse<br />
* imgaborfilt<br />
* imgaussfilt<br />
* imgaussfilt3<br />
* imgca<br />
* imgcf<br />
* imguidedfilter<br />
* imhandles<br />
* imhistmatch<br />
* imhmax<br />
* imhmin<br />
* imimposemin<br />
* imline<br />
* immagbox<br />
* immovie<br />
* imoverview<br />
* imoverviewpanel<br />
* impixelinfo<br />
* impixelinfoval<br />
* impixelregionpanel<br />
* impixelregion<br />
* implay<br />
* impoint<br />
* impoly<br />
* improfile<br />
* imrect<br />
* imref2d<br />
* imref3d<br />
* imregconfig<br />
* imregcorr<br />
* imregdemons<br />
* imregister<br />
* imregtform<br />
* imroi<br />
* imscrollpanel<br />
* imsegfmm<br />
* imseggeodesic<br />
* imsharpen<br />
* imshowpair<br />
* imtool<br />
* imwarp<br />
* integralBoxFilter<br />
* integralBoxFilter3<br />
* integralImage<br />
* integralImage3<br />
* interfileinfo<br />
* interfileread<br />
* iptaddcallback<br />
* iptcheckhandle<br />
* iptgetapi<br />
* iptGetPointerBehavior<br />
* iptgetpref<br />
* ipticondir<br />
* iptPointerManager<br />
* iptprefs<br />
* iptremovecallback<br />
* iptSetPointerBehavior<br />
* iptsetpref<br />
* iptwindowalign<br />
* isicc<br />
* isrset<br />
* makecform<br />
* makeConstrainToRectFcn<br />
* makehdr<br />
* makeresampler<br />
* multithresh<br />
* nitfinfo<br />
* nitfread<br />
* openrset<br />
* para2fan<br />
* projective2d<br />
* regionfill<br />
* roifill<br />
* roifilt2<br />
* roipoly<br />
* rsetwrite<br />
* ssim<br />
* tformarray<br />
* tonemap<br />
* truesize<br />
* visboundaries<br />
* viscircles<br />
* warp<br />
* whitepoint<br />
* wiener2<br />
* xyz2double<br />
* xyz2uint16<br />
</div><br />
<br />
=== Different functions ===<br />
<br />
* with version 2014a, Matlab introduced a new function imtranslate. This function was part of Octave's package since 2002 but Matlab version is completely different. It needs to be rewritten for Matlab compatibility.<br />
<br />
=== Missing options ===<br />
<br />
* @strel<br />
** missing SE decomposition for the diamond shape<br />
** approximation argument for the ball and disk shapes are not implemented<br />
** the translate method is not yet implemented<br />
* blockproc<br />
** The name-value input arguments have not yet been implemented.<br />
* colfilt<br />
** the option to split the image in smaller blocks before performing the im2col and filtering is ignored. Since that option only allows to use less memory and has no effect on the output is only important for sliding filtering with big blocks size.<br />
* impixel<br />
** interactive selection of points (less than 2 input arguments) is not yet implemented. Ability to create such UIs needs to be implemented in Octave core first.<br />
* imcrop<br />
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.<br />
* imwrap<br />
** no supports for SmoothEdges option<br />
* hough<br />
** no RhoResolution option<br />
<br />
=== Contributing ===<br />
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.<br />
<br />
=== Open Bugs ===<br />
<br />
{| class="wikitable" <br />
|-<br />
! bug !! bug title !! status<br />
|-<br />
| {{bug|38085}} || image package: fails to build with --enable-64 (entropyfilt) || Confirmed <br />
|-<br />
| {{bug|38087}}|| image package: graycomatrix incompatibilities with matlab || None<br />
|-<br />
| {{bug|38345}}|| image package: __spatial_filtering__() always returns class double || Confirmed<br />
|-<br />
| {{bug|41674}}|| image package: temporary arrays in imresize are doubles || None<br />
|-<br />
| {{bug|41768}}|| imdither() calls imwrite() in the wrong way (Package: image) || None<br />
|-<br />
| {{bug|43218}}|| image package: imshear causes more signal spread than expected and inconsistent vertical offset || None<br />
|-<br />
| {{bug|44396}}|| image package: bwmorph shrink does not preserve Euler number || Confirmed<br />
|-<br />
| {{bug|44799}}|| image package: imrotate chrashes when using 'spline' as interpolation method || Confirmed<br />
|-<br />
| {{bug|44831}}|| image package: imrotate - different dimensions of output matrix || Confirmed<br />
|-<br />
| {{bug|45088}}|| image package: rangefilt requires domain and image to have equal number of dimensions || Patch Reviewed<br />
|-<br />
| {{bug|45333}}|| image package: grayhresh fails if input doesn't have different values|| Patch Submitted<br />
|-<br />
| {{bug|46745}}|| image package: imresize default method (bicubic) Matlab incompatible for the border pixels|| None<br />
|-<br />
| {{bug|47115}}|| label2rgb from image-package doesn't work for labels with value above the uint16 limit|| Confirmed<br />
|-<br />
| {{bug|48529}}|| image package: compilation warnings under Mac OSX|| None<br />
|-<br />
| {{bug|48794}}|| image package: imreconstruct should clip marker > mask|| None<br />
|-<br />
| {{bug|49613}}|| image package - regionprops.m majoraxislength broken|| Patch Submitted<br />
|-<br />
| {{bug|50071}}|| OF image: bwfill(...,4) in Octave behaves like bwfill(...,8) in MATLAB and vice versa|| None<br />
|-<br />
| {{bug|50151}}|| image package: normxcorr2 is not compatible with Matlab|| None<br />
|-<br />
| {{bug|50188}}|| image package: poly2mask does incompatible rounding|| None<br />
|-<br />
| {{bug|50257}}|| image package: imtranslate is not Matlab compatible|| Confirmed<br />
|-<br />
| {{bug|50341}}|| Missing Function imrect in image package|| None<br />
|-<br />
| {{bug|50429}}|| image package: xyz2lab changed slightly in Matlab (and other color conversion functions)|| None <br />
|-<br />
| {{bug|50656}}|| image package: bwerode does not return right size when there's more dimensions on conn || None<br />
|-<br />
| {{bug|50708}}|| image package: add demosaic.m|| Patch Submitted<br />
|-<br />
| {{bug|50732}} || Image package: infinite error loop when assigning a strel (class) object to a vector|| Confirmed<br />
|-<br />
|}<br />
<br />
=== Patches ===<br />
<br />
* {{patch|8059}}: [new function for image package] ranktf.m<br />
* {{patch|8060}}: [image package new function] whitepoint.m<br />
* {{patch|8722}}: implement impixelinfo and impixelinfoval<br />
* {{patch|8813}}: image package: Extended image I/O for Analyze 7.5 format to handle big-endian images<br />
* {{patch|8866}}: image package: add metainfo.xml file for Gnome Software<br />
* {{patch|8571}}: image package: three deconvolution routines (Wiener, RL, RLTV)<br />
* {{patch|8824}}: added affine2d class<br />
* {{patch|9235}}: image package: improve filtering functions (stdfilt, entropyfilt) and add tests (also medfilt2, ordfilt2, rangefilt)<br />
* {{patch|9244}}: image package: regionprops.m - new properties ConvexHull, ConvexImage, ConvexArea, Solidity<br />
[[Category:Octave-Forge]]<br />
* {{patch|9281}}: Image package: imsharpen</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Image_package&diff=10297Image package2017-04-03T12:51:16Z<p>Carandraug: /* Open Bugs */ removed fixed {{bug|50153}} bwperim result on 1x1 input incorrect</p>
<hr />
<div>The {{Forge|image|image package}} is part of the octave-forge project. See its {{Forge|image|homepage}} for the latest release.<br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
=== Roadmap ===<br />
<br />
The following are missing targets for the next minor release of the image package (version 2.8.0). Small bug fixes, build fixes, and regressions may still be released before in a patch release (Version 2.6.X).<br />
<br />
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}}) ([http://hg.code.sf.net/p/octave/image/rev/7cf22a478792 done])<br />
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with labeled == labelid)<br />
* support passing {{codeline|bwconncomp}} output to {{codeline|regionprops}} (and then fix {{codeline|bwpropfilt}} to use that instead of a labeled image)<br />
* ND support on {{codeline|imfilter}}<br />
* check if {{codeline|normxcorr2}} is Matlab compatible and investigate making use of {{codeline|fftconvn}} since it's likely to receive large input<br />
* investigate implementing the missing deconvolution functions (see patch {{patch|8571}})<br />
* anything else that is done or submitted before the above are done<br />
<br />
=== Missing functions ===<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* activecontour<br />
* adapthisteq<br />
* affine2d<br />
* affine3d<br />
* applycform<br />
* axes2pix<br />
* bwconvhull<br />
* bwdistgeodesic<br />
* bwlookup<br />
* bwpack<br />
* bwtraceboundary<br />
* bwulterode<br />
* bwunpack<br />
* convmtx2<br />
* corner<br />
* cornermetric<br />
* cpcorr<br />
* cpselect<br />
* cpstruct2pairs<br />
* dct2<br />
* dctmtx<br />
* deconvblind<br />
* deconvlucy<br />
* deconvreg<br />
* deconvwnr<br />
* decorrstretch<br />
* demosaic<br />
* dicomanon<br />
* dicomdisp<br />
* dicomuid<br />
* dpxread<br />
* dpxinfo<br />
* fan2para<br />
* fanbeam<br />
* fliptform<br />
* freqz2<br />
* fsamp2<br />
* ftrans2<br />
* fwind1<br />
* fwind2<br />
* gabor<br />
* getimage<br />
* getimagemodel<br />
* getline<br />
* getpts<br />
* getrect<br />
* gradientweight<br />
* graycoprops<br />
* grayconnected<br />
* graydiffweight<br />
* hdrread<br />
* hdrwrite<br />
* houghlines -- (see hough_line)<br />
* houghpeaks<br />
* iccfind<br />
* iccread<br />
* iccroot<br />
* iccwrite<br />
* idct2<br />
* ifanbeam<br />
* im2java2d<br />
* ImageAdapter<br />
* imageinfo<br />
* imapplymatrix<br />
* imapprox<br />
* imboxfilt<br />
* imboxfilt3<br />
* imcolormaptool<br />
* imcontour<br />
* imcontrast<br />
* imdisplayrange<br />
* imdistline<br />
* imellipse<br />
* imextendedmax<br />
* imextendedmin<br />
* imfindcircles<br />
* imfreehand<br />
* imfuse<br />
* imgaborfilt<br />
* imgaussfilt<br />
* imgaussfilt3<br />
* imgca<br />
* imgcf<br />
* imguidedfilter<br />
* imhandles<br />
* imhistmatch<br />
* imhmax<br />
* imhmin<br />
* imimposemin<br />
* imline<br />
* immagbox<br />
* immovie<br />
* imoverview<br />
* imoverviewpanel<br />
* impixelinfo<br />
* impixelinfoval<br />
* impixelregionpanel<br />
* impixelregion<br />
* implay<br />
* impoint<br />
* impoly<br />
* improfile<br />
* imrect<br />
* imref2d<br />
* imref3d<br />
* imregconfig<br />
* imregcorr<br />
* imregdemons<br />
* imregister<br />
* imregtform<br />
* imroi<br />
* imscrollpanel<br />
* imsegfmm<br />
* imseggeodesic<br />
* imsharpen<br />
* imshowpair<br />
* imtool<br />
* imwarp<br />
* integralBoxFilter<br />
* integralBoxFilter3<br />
* integralImage<br />
* integralImage3<br />
* interfileinfo<br />
* interfileread<br />
* iptaddcallback<br />
* iptcheckhandle<br />
* iptgetapi<br />
* iptGetPointerBehavior<br />
* iptgetpref<br />
* ipticondir<br />
* iptPointerManager<br />
* iptprefs<br />
* iptremovecallback<br />
* iptSetPointerBehavior<br />
* iptsetpref<br />
* iptwindowalign<br />
* isicc<br />
* isrset<br />
* makecform<br />
* makeConstrainToRectFcn<br />
* makehdr<br />
* makeresampler<br />
* multithresh<br />
* nitfinfo<br />
* nitfread<br />
* openrset<br />
* para2fan<br />
* projective2d<br />
* regionfill<br />
* roifill<br />
* roifilt2<br />
* roipoly<br />
* rsetwrite<br />
* ssim<br />
* tformarray<br />
* tonemap<br />
* truesize<br />
* visboundaries<br />
* viscircles<br />
* warp<br />
* whitepoint<br />
* wiener2<br />
* xyz2double<br />
* xyz2uint16<br />
</div><br />
<br />
=== Different functions ===<br />
<br />
* with version 2014a, Matlab introduced a new function imtranslate. This function was part of Octave's package since 2002 but Matlab version is completely different. It needs to be rewritten for Matlab compatibility.<br />
<br />
=== Missing options ===<br />
<br />
* @strel<br />
** missing SE decomposition for the diamond shape<br />
** approximation argument for the ball and disk shapes are not implemented<br />
** the translate method is not yet implemented<br />
* blockproc<br />
** The name-value input arguments have not yet been implemented.<br />
* colfilt<br />
** the option to split the image in smaller blocks before performing the im2col and filtering is ignored. Since that option only allows to use less memory and has no effect on the output is only important for sliding filtering with big blocks size.<br />
* impixel<br />
** interactive selection of points (less than 2 input arguments) is not yet implemented. Ability to create such UIs needs to be implemented in Octave core first.<br />
* imcrop<br />
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.<br />
* imwrap<br />
** no supports for SmoothEdges option<br />
* hough<br />
** no RhoResolution option<br />
<br />
=== Contributing ===<br />
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.<br />
<br />
=== Open Bugs ===<br />
<br />
{| class="wikitable" <br />
|-<br />
! bug !! bug title !! status<br />
|-<br />
| {{bug|38085}} || image package: fails to build with --enable-64 (entropyfilt) || Confirmed <br />
|-<br />
| {{bug|38087}}|| image package: graycomatrix incompatibilities with matlab || None<br />
|-<br />
| {{bug|38345}}|| image package: __spatial_filtering__() always returns class double || Confirmed<br />
|-<br />
| {{bug|41674}}|| image package: temporary arrays in imresize are doubles || None<br />
|-<br />
| {{bug|41768}}|| imdither() calls imwrite() in the wrong way (Package: image) || None<br />
|-<br />
| {{bug|43218}}|| image package: imshear causes more signal spread than expected and inconsistent vertical offset || None<br />
|-<br />
| {{bug|44396}}|| image package: bwmorph shrink does not preserve Euler number || Confirmed<br />
|-<br />
| {{bug|44799}}|| image package: imrotate chrashes when using 'spline' as interpolation method || Confirmed<br />
|-<br />
| {{bug|44831}}|| image package: imrotate - different dimensions of output matrix || Confirmed<br />
|-<br />
| {{bug|45088}}|| image package: rangefilt requires domain and image to have equal number of dimensions || Patch Reviewed<br />
|-<br />
| {{bug|45333}}|| image package: grayhresh fails if input doesn't have different values|| Patch Submitted<br />
|-<br />
| {{bug|46745}}|| image package: imresize default method (bicubic) Matlab incompatible for the border pixels|| None<br />
|-<br />
| {{bug|47115}}|| label2rgb from image-package doesn't work for labels with value above the uint16 limit|| Confirmed<br />
|-<br />
| {{bug|48529}}|| image package: compilation warnings under Mac OSX|| None<br />
|-<br />
| {{bug|48794}}|| image package: imreconstruct should clip marker > mask|| None<br />
|-<br />
| {{bug|49613}}|| image package - regionprops.m majoraxislength broken|| Patch Submitted<br />
|-<br />
| {{bug|50071}}|| OF image: bwfill(...,4) in Octave behaves like bwfill(...,8) in MATLAB and vice versa|| None<br />
|-<br />
| {{bug|50122}}|| image package: normxcorr2 sometimes returns inf values|| Patch Reviewed <br />
|-<br />
| {{bug|50151}}|| image package: normxcorr2 is not compatible with Matlab|| None<br />
|-<br />
| {{bug|50180}}|| OF-image fails to build with dev Octave (4.3.0+)|| Fixed<br />
|-<br />
| {{bug|50188}}|| image package: poly2mask does incompatible rounding|| None<br />
|-<br />
| {{bug|50257}}|| image package: imtranslate is not Matlab compatible|| Confirmed<br />
|-<br />
| {{bug|50341}}|| Missing Function imrect in image package|| None<br />
|-<br />
| {{bug|50429}}|| image package: xyz2lab changed slightly in Matlab (and other color conversion functions)|| None <br />
|-<br />
|}<br />
<br />
=== Patches ===<br />
<br />
* {{patch|8059}}: [new function for image package] ranktf.m<br />
* {{patch|8060}}: [image package new function] whitepoint.m<br />
* {{patch|8722}}: implement impixelinfo and impixelinfoval<br />
* {{patch|8813}}: image package: Extended image I/O for Analyze 7.5 format to handle big-endian images<br />
* {{patch|8866}}: image package: add metainfo.xml file for Gnome Software<br />
* {{patch|8571}}: image package: three deconvolution routines (Wiener, RL, RLTV)<br />
* {{patch|8824}}: added affine2d class<br />
* {{patch|9235}}: image package: improve filtering functions (stdfilt, entropyfilt) and add tests (also medfilt2, ordfilt2, rangefilt)<br />
* {{patch|9244}}: image package: regionprops.m - new properties ConvexHull, ConvexImage, ConvexArea, Solidity<br />
[[Category:Octave-Forge]]<br />
* {{patch|9281}}: Image package: imsharpen</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2017&diff=9895OctConf 20172017-02-21T15:40:57Z<p>Carandraug: /* Schedule */</p>
<hr />
<div>We are happy to announce the upcoming Octave Conference 2017 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 20th until March 22nd. The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: Octave [2] is a fundamental tool of analysis and research for hundreds of CERN scientists; Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The three-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond. There will two open sessions on Monday and Tuesday showcasing Octave and some interesting and successful Octave stories.<br />
To register officially, please use the CERN conference manager [https://indico.cern.ch/event/609833/ Indico].<br />
In addition, *please* add your name to the Participants section of this page so we can plan appropriately.<br />
<br />
We are working out the details of the programme, and the call for contributions and abstract is still open. You are all invited to submit an abstract and present your experience with Octave at the conference!<br />
<br />
We are hopeful that the key members of the Octave development team will make it, both from oversea and from Europe. You can find more updated information on the programme in the [https://indico.cern.ch/event/609833 CERN's OctConf webpage] and in here.<br />
<br />
== Dates ==<br />
<br />
The conference will run for three days from Monday, March 20th through Wednesday, March 22nd.<br />
<br />
<br />
== Location ==<br />
<br />
=== Geneva, Switzerland ===<br />
=== Venue ===<br />
The upcoming Octconf 2017 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research)<br />
<br />
At CERN, the European Organization for Nuclear Research, physicists and engineers are probing the fundamental structure of the universe. They use the world's largest and most complex scientific instruments to study the basic constituents of matter – the fundamental particles. The particles are made to collide together at close to the speed of light. The process gives the physicists clues about how the particles interact, and provides insights into the fundamental laws of nature.<br />
The instruments used at CERN are purpose-built particle accelerators and detectors. Accelerators boost beams of particles to high energies before the beams are made to collide with each other or with stationary targets. Detectors observe and record the results of these collisions.<br />
<br />
Founded in 1954, the CERN laboratory sits astride the Franco-Swiss border near Geneva. It was one of Europe's first joint ventures and now has 22 member states.<br />
<br />
=== Social activities ===<br />
<br />
Two social events have been foreseen, besides the coffee and the lunch breaks:<br />
* A unique visit to [http://visit.cern/tours CERN]<br />
* A [https://en.wikipedia.org/wiki/Fondue Fondue] dinner down-town Geneva<br />
<br />
=== Travelling ===<br />
The information below is taken from [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
Please check that link for further details.<br />
<br />
[http://visit.cern/sites/visits.web.cern.ch/files/files/exhibitions/access-map.pdf How to get to CERN infographics]<br />
<br />
CERN Reception - Meyrin<br />
<br />
CERN - European Organization for Nuclear Research<br />
385 route de Meyrin<br />
CH-1217 Meyrin - Geneva<br />
Switzerland<br />
<br />
* GPS Coordinates<br />
Latitude: 46.2314284<br />
<br />
Longitude: 6.0539718<br />
<br />
<br />
==== By train ====<br />
Coming from the Geneva railway station at Cornavin<br />
<br />
Tram - Take the number 18 tram to "CERN" which is the final stop at the CERN entrance.<br />
<br />
Ticket costs 3 CHF full-fare / 2 CHF reduced-fare (Ticket "Tout Genève" on the ticket machine). <br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
==== By car ====<br />
<br />
* From Switzerland<br />
<br />
Follow signs for "Aéroport", "Lyon" and "Meyrin".<br />
<br />
Once you are in Meyrin, follow signs for "St. Genis" (which is just beyond the border, in France). <br />
<br />
Before reaching St Genis, the CERN site is on your left on "Route de Meyrin", just before you reach the border.<br />
<br />
* From France (département of Ain)<br />
<br />
Follow signs for "Gex" or "St. Genis". <br />
When you reach the border, CERN is on your right immediately after passing through customs.<br />
<br />
See [http://visit.cern/exhibitions/how-get-cern-car Parking] for parking information.<br />
<br />
==== By plane ====<br />
Coming from the Geneva International Airport at Cointrin<br />
<br />
Taxi - approximately 35CHF.<br />
<br />
Bus - First take a public transport ticket from the machine you will find at the exit to the baggage collection hall, just before customs control. Then:<br />
<br />
Option 1: Take bus Y direction "CERN" and get off at the CERN stop opposite the large Globe and the CERN site.<br />
<br />
Option 2: Take bus 23, 28 or 57 and get off at the stop "Blandonnet" and then catch the Tram number 18, final stop "CERN".<br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
== Tips and tricks ==<br />
A normal lunch at CERN costs about 15 CHF, inclusive of one coffee and one delicious dessert.<br />
<br />
A bus ride from the airport to CERN is free of charge, if you take a ticket at the vending machine in the baggage claim area. Should you miss that vending machine, a ticket will cost you 3.00 CHF. https://genevalunch.com/guides/travel/the-cheerful-traveler-geneva-airport-public-transport/<br />
<br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You can try your luck and search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
== Suggestions for Sessions ==<br />
<br />
Approximately half of each day will be devoted to presentations. The remainder will be used for informal discussions, code sprints, etc.<br />
<br />
Please propose session topics in the schedule below. The actual time slot you pick is not important--we can re-arrange the schedule later--but we need to know what topics are of interest.<br />
<br />
In addition, if you have a poster, rather than a full presentation, there is a separate sign-up sheet below.<br />
<br />
=== Schedule ===<br />
During the daytime: CERN offers many areas where people can socialize and/or discuss, informally. For instance, the CERN main restaurant is open until 23:00 (11:00 PM).<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday<br/>(General GNU Octave day)</th><br />
<th width="220">Tuesday<br/>(GNU Octave Packages day)</th><br />
<th width="250">Wednesday<br/>(Libre and Open Source Software day)</th><br />
</tr><br />
<tr><br />
<td>9:00-9:30</td><br />
<td>Open slot</td><br />
<td>GSoC project: Exponential Integrators<br/>(Chiara Segala)</td><br />
<td rowspan="2">Unconference</td><br />
</tr><br />
<tr><br />
<td>9:30-10:00</td><br />
<td>Octave for N dimensions and microscope image processing (Carnë Draug / David Miguel Susano Pinto)</td><br />
<td>SOCIS project: Improve iterative methods for sparse linear systems<br/>(Cristiano Dorigo)</td><br />
</tr><br />
<tr><br />
<td>10:00-10:15</td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
</tr><br />
<tr><br />
<td>10:15-10:50</td><br />
<td>Designing Particle Accelerators using Octave (A. Latina)</td><br />
<td>Open Slot</td><br />
<td rowspan="3">Unconference</td><br />
</tr><br />
<tr><br />
<td>10:50-11:25</td><br />
<td>[https://www.gnu.org/software/octave/doc/interpreter/XREFpublish.html publish] your code with Octave (Kai T. Ohlhus)</td><br />
<td>Open Slot</td><br />
</tr><br />
<tr><br />
<td>11:25-12:00</td><br />
<td>GSoC project: ode15{i,s}<br/>(Francesco Faccio)</td><br />
<td>The future of the Neural Network package<br/>(Francesco Faccio)</td><br />
</tr><br />
<tr><br />
<td>12:00-12:45</td><br />
<td><strong>Discussion</strong></td><br />
<td><strong>Discussion</strong></td><br />
<td>8/16-bit simulation with GNU Octave (Andreas Stahel)</td><br />
</tr><br />
<tr><br />
<td><br/>12:45-14:00<br/><br/></td><br />
<td><strong>Lunch</strong></td><br />
<td><strong>Lunch</strong></td><br />
<td><strong>Lunch</strong></td><br />
</tr><br />
<tr><br />
<td>14:00-14:35</td><br />
<td rowspan="3">Open Slot (Plenary session: CERN main auditorium)<br/>Status of Octave - 1h<br/>(John W. Eaton) </td><br />
<td rowspan="3">Open Slot (Plenary session: CERN main auditorium)</td><br />
<td rowspan="3">Visit to CERN sites</td><br />
</tr><br />
<tr><br />
<td>14:35-15:10</td><br />
</tr><br />
<tr><br />
<td>15:10-15:45</td><br />
</tr><br />
<tr><br />
<td>15:45-16:00</td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
</tr><br />
<tr><br />
<td><br/><br/>16:00-18:00<br/><br/><br/></td><br />
<td><strong>Code Sprint</strong></td><br />
<td><strong>Code Sprint</strong></td><br />
<td><strong>Organization of OctConf2018</strong></td><br />
</tr><br />
<tr><br />
<td>18:00-19:00</td><br />
<td rowspan="2">Fondue night (alternative 1)</td><br />
<td rowspan="2">Fondue night (alternative 2)</td><br />
<td rowspan="2">Closing and Farewell</td><br />
</tr><br />
<tr><br />
<td>19:00-20:00</td><br />
</tr><br />
</table><br />
<br />
=== Poster Session ===<br />
<br />
If you have a poster demonstrating how you use Octave to address an application in your field please add your name and poster topic to the list below. We will schedule an appropriately sized space based on the number of posters.<br />
<br />
Confirmed Posters:<br />
<br />
<table class="tg" border="0" width="600" style="text-align: left"><br />
<tr><br />
<th width="400">Title</th><br />
<th width="200">Author</th><br />
</tr><br />
<tr><br />
<td>Fast approximation of complicated simulators</td><br />
<td>[[User:KaKiLa |JuanPi Carbajal]]</td><br />
</tr><br />
<tr><br />
<td>VSDP: Verified SemiDefinite Programming</td><br />
<td>[[User:Siko1056|Kai T. Ohlhus]]</td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr> <br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
</table><br />
<br />
== Participants ==<br />
To register officially, please use the CERN conference manager [https://indico.cern.ch/event/609833/ Indico].<br />
<br />
* [[User:KaKiLa|JuanPi Carbajal]]<br />
* [[User:Francesco Faccio|Francesco Faccio]] (need funding for travel)<br />
* [[User:jwe|John W. Eaton]] (need funding for travel)<br />
* [[User:Doug|Douglas Stewart]]<br />
* [[User:Siko1056|Kai T. Ohlhus]]<br />
* [[User:Oheim|Oliver Heimlich]] (Tuesday–Wednesday)<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:Andy1978|Andreas Weber]] (likely to attend but have to wait for the final okay from employer)<br />
* Valentin Ortega Clavero (likely to attend but have to wait for the final okay from employer)<br />
* Andrea Latina<br />
* Andreas Stahel<br />
* [[User:CdF|Carlo de Falco]] (likely to attend, probably one day only)<br />
* Cristiano Dorigo<br />
* Michele Ginesi<br />
* Chiara Segala<br />
* [[User:pantxo|Pantxo Diribarne]] (likely to attend, probably one day only)<br />
* Marco Caliari (arrival in Monday afternoon)<br />
* Anna Ferrarini<br />
* Elisa Frison<br />
* Sara Stillavati<br />
<br />
== Funding ==<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2015]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2018]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2017]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2017&diff=9894OctConf 20172017-02-21T15:40:00Z<p>Carandraug: /* Suggestions for Sessions */ move talk into the schedule</p>
<hr />
<div>We are happy to announce the upcoming Octave Conference 2017 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 20th until March 22nd. The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: Octave [2] is a fundamental tool of analysis and research for hundreds of CERN scientists; Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The three-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond. There will two open sessions on Monday and Tuesday showcasing Octave and some interesting and successful Octave stories.<br />
To register officially, please use the CERN conference manager [https://indico.cern.ch/event/609833/ Indico].<br />
In addition, *please* add your name to the Participants section of this page so we can plan appropriately.<br />
<br />
We are working out the details of the programme, and the call for contributions and abstract is still open. You are all invited to submit an abstract and present your experience with Octave at the conference!<br />
<br />
We are hopeful that the key members of the Octave development team will make it, both from oversea and from Europe. You can find more updated information on the programme in the [https://indico.cern.ch/event/609833 CERN's OctConf webpage] and in here.<br />
<br />
== Dates ==<br />
<br />
The conference will run for three days from Monday, March 20th through Wednesday, March 22nd.<br />
<br />
<br />
== Location ==<br />
<br />
=== Geneva, Switzerland ===<br />
=== Venue ===<br />
The upcoming Octconf 2017 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research)<br />
<br />
At CERN, the European Organization for Nuclear Research, physicists and engineers are probing the fundamental structure of the universe. They use the world's largest and most complex scientific instruments to study the basic constituents of matter – the fundamental particles. The particles are made to collide together at close to the speed of light. The process gives the physicists clues about how the particles interact, and provides insights into the fundamental laws of nature.<br />
The instruments used at CERN are purpose-built particle accelerators and detectors. Accelerators boost beams of particles to high energies before the beams are made to collide with each other or with stationary targets. Detectors observe and record the results of these collisions.<br />
<br />
Founded in 1954, the CERN laboratory sits astride the Franco-Swiss border near Geneva. It was one of Europe's first joint ventures and now has 22 member states.<br />
<br />
=== Social activities ===<br />
<br />
Two social events have been foreseen, besides the coffee and the lunch breaks:<br />
* A unique visit to [http://visit.cern/tours CERN]<br />
* A [https://en.wikipedia.org/wiki/Fondue Fondue] dinner down-town Geneva<br />
<br />
=== Travelling ===<br />
The information below is taken from [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
Please check that link for further details.<br />
<br />
[http://visit.cern/sites/visits.web.cern.ch/files/files/exhibitions/access-map.pdf How to get to CERN infographics]<br />
<br />
CERN Reception - Meyrin<br />
<br />
CERN - European Organization for Nuclear Research<br />
385 route de Meyrin<br />
CH-1217 Meyrin - Geneva<br />
Switzerland<br />
<br />
* GPS Coordinates<br />
Latitude: 46.2314284<br />
<br />
Longitude: 6.0539718<br />
<br />
<br />
==== By train ====<br />
Coming from the Geneva railway station at Cornavin<br />
<br />
Tram - Take the number 18 tram to "CERN" which is the final stop at the CERN entrance.<br />
<br />
Ticket costs 3 CHF full-fare / 2 CHF reduced-fare (Ticket "Tout Genève" on the ticket machine). <br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
==== By car ====<br />
<br />
* From Switzerland<br />
<br />
Follow signs for "Aéroport", "Lyon" and "Meyrin".<br />
<br />
Once you are in Meyrin, follow signs for "St. Genis" (which is just beyond the border, in France). <br />
<br />
Before reaching St Genis, the CERN site is on your left on "Route de Meyrin", just before you reach the border.<br />
<br />
* From France (département of Ain)<br />
<br />
Follow signs for "Gex" or "St. Genis". <br />
When you reach the border, CERN is on your right immediately after passing through customs.<br />
<br />
See [http://visit.cern/exhibitions/how-get-cern-car Parking] for parking information.<br />
<br />
==== By plane ====<br />
Coming from the Geneva International Airport at Cointrin<br />
<br />
Taxi - approximately 35CHF.<br />
<br />
Bus - First take a public transport ticket from the machine you will find at the exit to the baggage collection hall, just before customs control. Then:<br />
<br />
Option 1: Take bus Y direction "CERN" and get off at the CERN stop opposite the large Globe and the CERN site.<br />
<br />
Option 2: Take bus 23, 28 or 57 and get off at the stop "Blandonnet" and then catch the Tram number 18, final stop "CERN".<br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
== Tips and tricks ==<br />
A normal lunch at CERN costs about 15 CHF, inclusive of one coffee and one delicious dessert.<br />
<br />
A bus ride from the airport to CERN is free of charge, if you take a ticket at the vending machine in the baggage claim area. Should you miss that vending machine, a ticket will cost you 3.00 CHF. https://genevalunch.com/guides/travel/the-cheerful-traveler-geneva-airport-public-transport/<br />
<br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You can try your luck and search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
== Suggestions for Sessions ==<br />
<br />
Approximately half of each day will be devoted to presentations. The remainder will be used for informal discussions, code sprints, etc.<br />
<br />
Please propose session topics in the schedule below. The actual time slot you pick is not important--we can re-arrange the schedule later--but we need to know what topics are of interest.<br />
<br />
In addition, if you have a poster, rather than a full presentation, there is a separate sign-up sheet below.<br />
<br />
=== Schedule ===<br />
During the daytime: CERN offers many areas where people can socialize and/or discuss, informally. For instance, the CERN main restaurant is open until 23:00 (11:00 PM).<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday<br/>(General GNU Octave day)</th><br />
<th width="220">Tuesday<br/>(GNU Octave Packages day)</th><br />
<th width="250">Wednesday<br/>(Libre and Open Source Software day)</th><br />
</tr><br />
<tr><br />
<td>9:00-9:30</td><br />
<td>Octave for N dimensions and microscope image processing (Carnë Draug / David Miguel Susano Pinto)</td><br />
<td>GSoC project: Exponential Integrators<br/>(Chiara Segala)</td><br />
<td rowspan="2">Unconference</td><br />
</tr><br />
<tr><br />
<td>9:30-10:00</td><br />
<td>Open Slot</td><br />
<td>SOCIS project: Improve iterative methods for sparse linear systems<br/>(Cristiano Dorigo)</td><br />
</tr><br />
<tr><br />
<td>10:00-10:15</td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
</tr><br />
<tr><br />
<td>10:15-10:50</td><br />
<td>Designing Particle Accelerators using Octave (A. Latina)</td><br />
<td>Open Slot</td><br />
<td rowspan="3">Unconference</td><br />
</tr><br />
<tr><br />
<td>10:50-11:25</td><br />
<td>[https://www.gnu.org/software/octave/doc/interpreter/XREFpublish.html publish] your code with Octave (Kai T. Ohlhus)</td><br />
<td>Open Slot</td><br />
</tr><br />
<tr><br />
<td>11:25-12:00</td><br />
<td>GSoC project: ode15{i,s}<br/>(Francesco Faccio)</td><br />
<td>The future of the Neural Network package<br/>(Francesco Faccio)</td><br />
</tr><br />
<tr><br />
<td>12:00-12:45</td><br />
<td><strong>Discussion</strong></td><br />
<td><strong>Discussion</strong></td><br />
<td>8/16-bit simulation with GNU Octave (Andreas Stahel)</td><br />
</tr><br />
<tr><br />
<td><br/>12:45-14:00<br/><br/></td><br />
<td><strong>Lunch</strong></td><br />
<td><strong>Lunch</strong></td><br />
<td><strong>Lunch</strong></td><br />
</tr><br />
<tr><br />
<td>14:00-14:35</td><br />
<td rowspan="3">Open Slot (Plenary session: CERN main auditorium)<br/>Status of Octave - 1h<br/>(John W. Eaton) </td><br />
<td rowspan="3">Open Slot (Plenary session: CERN main auditorium)</td><br />
<td rowspan="3">Visit to CERN sites</td><br />
</tr><br />
<tr><br />
<td>14:35-15:10</td><br />
</tr><br />
<tr><br />
<td>15:10-15:45</td><br />
</tr><br />
<tr><br />
<td>15:45-16:00</td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
</tr><br />
<tr><br />
<td><br/><br/>16:00-18:00<br/><br/><br/></td><br />
<td><strong>Code Sprint</strong></td><br />
<td><strong>Code Sprint</strong></td><br />
<td><strong>Organization of OctConf2018</strong></td><br />
</tr><br />
<tr><br />
<td>18:00-19:00</td><br />
<td rowspan="2">Fondue night (alternative 1)</td><br />
<td rowspan="2">Fondue night (alternative 2)</td><br />
<td rowspan="2">Closing and Farewell</td><br />
</tr><br />
<tr><br />
<td>19:00-20:00</td><br />
</tr><br />
</table><br />
<br />
=== Poster Session ===<br />
<br />
If you have a poster demonstrating how you use Octave to address an application in your field please add your name and poster topic to the list below. We will schedule an appropriately sized space based on the number of posters.<br />
<br />
Confirmed Posters:<br />
<br />
<table class="tg" border="0" width="600" style="text-align: left"><br />
<tr><br />
<th width="400">Title</th><br />
<th width="200">Author</th><br />
</tr><br />
<tr><br />
<td>Fast approximation of complicated simulators</td><br />
<td>[[User:KaKiLa |JuanPi Carbajal]]</td><br />
</tr><br />
<tr><br />
<td>VSDP: Verified SemiDefinite Programming</td><br />
<td>[[User:Siko1056|Kai T. Ohlhus]]</td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr> <br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
</table><br />
<br />
== Participants ==<br />
To register officially, please use the CERN conference manager [https://indico.cern.ch/event/609833/ Indico].<br />
<br />
* [[User:KaKiLa|JuanPi Carbajal]]<br />
* [[User:Francesco Faccio|Francesco Faccio]] (need funding for travel)<br />
* [[User:jwe|John W. Eaton]] (need funding for travel)<br />
* [[User:Doug|Douglas Stewart]]<br />
* [[User:Siko1056|Kai T. Ohlhus]]<br />
* [[User:Oheim|Oliver Heimlich]] (Tuesday–Wednesday)<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:Andy1978|Andreas Weber]] (likely to attend but have to wait for the final okay from employer)<br />
* Valentin Ortega Clavero (likely to attend but have to wait for the final okay from employer)<br />
* Andrea Latina<br />
* Andreas Stahel<br />
* [[User:CdF|Carlo de Falco]] (likely to attend, probably one day only)<br />
* Cristiano Dorigo<br />
* Michele Ginesi<br />
* Chiara Segala<br />
* [[User:pantxo|Pantxo Diribarne]] (likely to attend, probably one day only)<br />
* Marco Caliari (arrival in Monday afternoon)<br />
* Anna Ferrarini<br />
* Elisa Frison<br />
* Sara Stillavati<br />
<br />
== Funding ==<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2015]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2018]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2017]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Image_package&diff=9882Image package2017-02-18T15:15:01Z<p>Carandraug: update missing functions</p>
<hr />
<div>The {{Forge|image|image package}} is part of the octave-forge project. See its {{Forge|image|homepage}} for the latest release.<br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
=== Roadmap ===<br />
<br />
The following are missing targets for the next minor release of the image package (version 2.8.0). Small bug fixes, build fixes, and regressions may still be released before in a patch release (Version 2.6.X).<br />
<br />
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}}) ([http://hg.code.sf.net/p/octave/image/rev/7cf22a478792 done])<br />
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with labeled == labelid)<br />
* support passing {{codeline|bwconncomp}} output to {{codeline|regionprops}} (and then fix {{codeline|bwpropfilt}} to use that instead of a labeled image)<br />
* ND support on {{codeline|imfilter}}<br />
* check if {{codeline|normxcorr2}} is Matlab compatible and investigate making use of {{codeline|fftconvn}} since it's likely to receive large input<br />
* investigate implementing the missing deconvolution functions (see patch {{patch|8571}})<br />
* anything else that is done or submitted before the above are done<br />
<br />
=== Missing functions ===<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* activecontour<br />
* adapthisteq<br />
* affine2d<br />
* affine3d<br />
* applycform<br />
* axes2pix<br />
* bwconvhull<br />
* bwdistgeodesic<br />
* bwlookup<br />
* bwpack<br />
* bwtraceboundary<br />
* bwulterode<br />
* bwunpack<br />
* convmtx2<br />
* corner<br />
* cornermetric<br />
* cpcorr<br />
* cpselect<br />
* cpstruct2pairs<br />
* dct2<br />
* dctmtx<br />
* deconvblind<br />
* deconvlucy<br />
* deconvreg<br />
* deconvwnr<br />
* decorrstretch<br />
* demosaic<br />
* dicomanon<br />
* dicomdisp<br />
* dicomuid<br />
* dpxread<br />
* dpxinfo<br />
* fan2para<br />
* fanbeam<br />
* fliptform<br />
* freqz2<br />
* fsamp2<br />
* ftrans2<br />
* fwind1<br />
* fwind2<br />
* gabor<br />
* getimage<br />
* getimagemodel<br />
* getline<br />
* getpts<br />
* getrect<br />
* gradientweight<br />
* graycoprops<br />
* grayconnected<br />
* graydiffweight<br />
* hdrread<br />
* hdrwrite<br />
* houghlines -- (see hough_line)<br />
* houghpeaks<br />
* iccfind<br />
* iccread<br />
* iccroot<br />
* iccwrite<br />
* idct2<br />
* ifanbeam<br />
* im2java2d<br />
* ImageAdapter<br />
* imageinfo<br />
* imapplymatrix<br />
* imapprox<br />
* imboxfilt<br />
* imboxfilt3<br />
* imcolormaptool<br />
* imcontour<br />
* imcontrast<br />
* imdisplayrange<br />
* imdistline<br />
* imellipse<br />
* imextendedmax<br />
* imextendedmin<br />
* imfindcircles<br />
* imfreehand<br />
* imfuse<br />
* imgaborfilt<br />
* imgaussfilt<br />
* imgaussfilt3<br />
* imgca<br />
* imgcf<br />
* imguidedfilter<br />
* imhandles<br />
* imhistmatch<br />
* imhmax<br />
* imhmin<br />
* imimposemin<br />
* imline<br />
* immagbox<br />
* immovie<br />
* imoverview<br />
* imoverviewpanel<br />
* impixelinfo<br />
* impixelinfoval<br />
* impixelregionpanel<br />
* impixelregion<br />
* implay<br />
* impoint<br />
* impoly<br />
* improfile<br />
* imrect<br />
* imref2d<br />
* imref3d<br />
* imregconfig<br />
* imregcorr<br />
* imregdemons<br />
* imregister<br />
* imregtform<br />
* imroi<br />
* imscrollpanel<br />
* imsegfmm<br />
* imseggeodesic<br />
* imsharpen<br />
* imshowpair<br />
* imtool<br />
* imwarp<br />
* integralBoxFilter<br />
* integralBoxFilter3<br />
* integralImage<br />
* integralImage3<br />
* interfileinfo<br />
* interfileread<br />
* iptaddcallback<br />
* iptcheckhandle<br />
* iptgetapi<br />
* iptGetPointerBehavior<br />
* iptgetpref<br />
* ipticondir<br />
* iptPointerManager<br />
* iptprefs<br />
* iptremovecallback<br />
* iptSetPointerBehavior<br />
* iptsetpref<br />
* iptwindowalign<br />
* isicc<br />
* isrset<br />
* makecform<br />
* makeConstrainToRectFcn<br />
* makehdr<br />
* makeresampler<br />
* multithresh<br />
* nitfinfo<br />
* nitfread<br />
* openrset<br />
* para2fan<br />
* projective2d<br />
* regionfill<br />
* roifill<br />
* roifilt2<br />
* roipoly<br />
* rsetwrite<br />
* ssim<br />
* tformarray<br />
* tonemap<br />
* truesize<br />
* visboundaries<br />
* viscircles<br />
* warp<br />
* whitepoint<br />
* wiener2<br />
* xyz2double<br />
* xyz2uint16<br />
</div><br />
<br />
=== Different functions ===<br />
<br />
* with version 2014a, Matlab introduced a new function imtranslate. This function was part of Octave's package since 2002 but Matlab version is completely different. It needs to be rewritten for Matlab compatibility.<br />
<br />
=== Missing options ===<br />
<br />
* @strel<br />
** missing SE decomposition for the diamond shape<br />
** approximation argument for the ball and disk shapes are not implemented<br />
** the translate method is not yet implemented<br />
* blockproc<br />
** The name-value input arguments have not yet been implemented.<br />
* colfilt<br />
** the option to split the image in smaller blocks before performing the im2col and filtering is ignored. Since that option only allows to use less memory and has no effect on the output is only important for sliding filtering with big blocks size.<br />
* impixel<br />
** interactive selection of points (less than 2 input arguments) is not yet implemented. Ability to create such UIs needs to be implemented in Octave core first.<br />
* imcrop<br />
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.<br />
* imwrap<br />
** no supports for SmoothEdges option<br />
* hough<br />
** no RhoResolution option<br />
<br />
=== Contributing ===<br />
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.<br />
<br />
=== Open Bugs ===<br />
<br />
* {{bug|38085}}: image package: fails to build with --enable-64 (entropyfilt)<br />
* {{bug|38087}}: image package: graycomatrix incompatibilities with matlab<br />
* {{bug|38345}}: image package: __spatial_filtering__() always returns class double<br />
* {{bug|41674}}: image package: temporary arrays in imresize are doubles<br />
* {{bug|41768}}: imdither() calls imwrite() in the wrong way (Package: image)<br />
* {{bug|43218}}: image package: imshear causes more signal spread than expected and inconsistent vertical offset<br />
* {{bug|44396}}: image package: bwmorph shrink does not preserve Euler numbe<br />
* {{bug|44799}}: image package: imrotate chrashes when using 'spline' as interpolation method<br />
* {{bug|44831}}: image package: imrotate - different dimensions of output matrix<br />
* {{bug|45088}}: image package: rangefilt requires domain and image to have equa number of dimensions<br />
* {{bug|45333}}: image package: grayhresh fails if input doesn't have different values<br />
* {{bug|46745}}: image package: imresize default method (bicubic) Matlab incompatible for the border pixels<br />
* {{bug|47115}}: label2rgb from image-package doesn't work for labels with value above the uint16 limit<br />
* {{bug|48529}}: image package: compilation warnings under Mac OSX<br />
* {{bug|48794}}: image package: imreconstruct should clip marker > mask<br />
* {{bug|49613}}: image package - regionprops.m majoraxislength broken<br />
* {{bug|49941}}: image package: rgb2gray of a single image produces a double image<br />
* {{bug|50071}}: OF image: bwfill(...,4) in Octave behaves like bwfill(...,8) in MATLAB and vice versa<br />
* {{bug|50122}}: image package: normxcorr2 sometimes returns inf values<br />
* {{bug|50151}}: image package: normxcorr2 is not compatible with Matlab<br />
* {{bug|50152}}: rgb2ycbcr and ycbcr2rgb conversions do not preserve single class<br />
* {{bug|50153}}: image package: bwperim result on 1x1input incorrect<br />
[[Category:Octave-Forge]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2017&diff=9879OctConf 20172017-02-17T21:30:59Z<p>Carandraug: /* Suggestions for Sessions */ adding section to proposed talks</p>
<hr />
<div>We are happy to announce the upcoming Octave Conference 2017 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 20th until March 22nd. The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: Octave [2] is a fundamental tool of analysis and research for hundreds of CERN scientists; Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The three-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond. There will two open sessions on Monday and Tuesday showcasing Octave and some interesting and successful Octave stories.<br />
To register officially, please use the CERN conference manager [https://indico.cern.ch/event/609833/ Indico].<br />
In addition, *please* add your name to the Participants section of this page so we can plan appropriately.<br />
<br />
We are working out the details of the programme, and the call for contributions and abstract is still open. You are all invited to submit an abstract and present your experience with Octave at the conference!<br />
<br />
We are hopeful that the key members of the Octave development team will make it, both from oversea and from Europe. You can find more updated information on the programme in the [https://indico.cern.ch/event/609833 CERN's OctConf webpage] and in here.<br />
<br />
== Dates ==<br />
<br />
The conference will run for three days from Monday, March 20th through Wednesday, March 22nd.<br />
<br />
<br />
== Location ==<br />
<br />
=== Geneva, Switzerland ===<br />
=== Venue ===<br />
The upcoming Octconf 2017 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research)<br />
<br />
At CERN, the European Organization for Nuclear Research, physicists and engineers are probing the fundamental structure of the universe. They use the world's largest and most complex scientific instruments to study the basic constituents of matter – the fundamental particles. The particles are made to collide together at close to the speed of light. The process gives the physicists clues about how the particles interact, and provides insights into the fundamental laws of nature.<br />
The instruments used at CERN are purpose-built particle accelerators and detectors. Accelerators boost beams of particles to high energies before the beams are made to collide with each other or with stationary targets. Detectors observe and record the results of these collisions.<br />
<br />
Founded in 1954, the CERN laboratory sits astride the Franco-Swiss border near Geneva. It was one of Europe's first joint ventures and now has 22 member states.<br />
<br />
=== Social activities ===<br />
<br />
Two social events have been foreseen, besides the coffee and the lunch breaks:<br />
* A unique visit to [http://visit.cern/tours CERN]<br />
* A [https://en.wikipedia.org/wiki/Fondue Fondue] dinner down-town Geneva<br />
<br />
=== Travelling ===<br />
The information below is taken from [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
Please check that link for further details.<br />
<br />
[http://visit.cern/sites/visits.web.cern.ch/files/files/exhibitions/access-map.pdf How to get to CERN infographics]<br />
<br />
CERN Reception - Meyrin<br />
<br />
CERN - European Organization for Nuclear Research<br />
385 route de Meyrin<br />
CH-1217 Meyrin - Geneva<br />
Switzerland<br />
<br />
* GPS Coordinates<br />
Latitude: 46.2314284<br />
<br />
Longitude: 6.0539718<br />
<br />
<br />
==== By train ====<br />
Coming from the Geneva railway station at Cornavin<br />
<br />
Tram - Take the number 18 tram to "CERN" which is the final stop at the CERN entrance.<br />
<br />
Ticket costs 3 CHF full-fare / 2 CHF reduced-fare (Ticket "Tout Genève" on the ticket machine). <br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
==== By car ====<br />
<br />
* From Switzerland<br />
<br />
Follow signs for "Aéroport", "Lyon" and "Meyrin".<br />
<br />
Once you are in Meyrin, follow signs for "St. Genis" (which is just beyond the border, in France). <br />
<br />
Before reaching St Genis, the CERN site is on your left on "Route de Meyrin", just before you reach the border.<br />
<br />
* From France (département of Ain)<br />
<br />
Follow signs for "Gex" or "St. Genis". <br />
When you reach the border, CERN is on your right immediately after passing through customs.<br />
<br />
See [http://visit.cern/exhibitions/how-get-cern-car Parking] for parking information.<br />
<br />
==== By plane ====<br />
Coming from the Geneva International Airport at Cointrin<br />
<br />
Taxi - approximately 35CHF.<br />
<br />
Bus - First take a public transport ticket from the machine you will find at the exit to the baggage collection hall, just before customs control. Then:<br />
<br />
Option 1: Take bus Y direction "CERN" and get off at the CERN stop opposite the large Globe and the CERN site.<br />
<br />
Option 2: Take bus 23, 28 or 57 and get off at the stop "Blandonnet" and then catch the Tram number 18, final stop "CERN".<br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
== Tips and tricks ==<br />
A normal lunch at CERN costs about 15 CHF, inclusive of one coffee and one delicious dessert.<br />
<br />
A bus ride from the airport to CERN is free of charge, if you take a ticket at the vending machine in the baggage claim area. Should you miss that vending machine, a ticket will cost you 3.00 CHF. https://genevalunch.com/guides/travel/the-cheerful-traveler-geneva-airport-public-transport/<br />
<br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You can try your luck and search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
== Suggestions for Sessions ==<br />
<br />
Approximately half of each day will be devoted to presentations. The remainder will be used for informal discussions, code sprints, etc.<br />
<br />
Please propose session topics in the schedule below. The actual time slot you pick is not important--we can re-arrange the schedule later--but we need to know what topics are of interest.<br />
<br />
In addition, if you have a poster, rather than a full presentation, there is a separate sign-up sheet below.<br />
<br />
=== Proposed talks ===<br />
<br />
* "GNU Octave for fluorescence microscopy / Image processing in N dimensions" -- Carnë Draug / David Miguel Susano Pinto (Micron Oxford, University of Oxford)<br />
<br />
=== Schedule ===<br />
During the daytime: CERN offers many areas where people can socialize and/or discuss, informally. For instance, the CERN main restaurant is open until 23:00 (11:00 PM).<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday<br/>(General GNU Octave day)</th><br />
<th width="220">Tuesday<br/>(GNU Octave Packages day)</th><br />
<th width="250">Wednesday<br/>(Libre and Open Source Software day)</th><br />
</tr><br />
<tr><br />
<td>9:00-9:30</td><br />
<td>Open Slot</td><br />
<td>GSoC project: Exponential Integrators<br/>(Chiara Segala)</td><br />
<td rowspan="2">Unconference</td><br />
</tr><br />
<tr><br />
<td>9:30-10:00</td><br />
<td>Open Slot</td><br />
<td>SOCIS project: Improve iterative methods for sparse linear systems<br/>(Cristiano Dorigo)</td><br />
</tr><br />
<tr><br />
<td>10:00-10:15</td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
</tr><br />
<tr><br />
<td>10:15-10:50</td><br />
<td>Designing Particle Accelerators using Octave (A. Latina)</td><br />
<td>Open Slot</td><br />
<td>Unconference</td><br />
</tr><br />
<tr><br />
<td>10:50-11:25</td><br />
<td>[https://www.gnu.org/software/octave/doc/interpreter/XREFpublish.html publish] your code with Octave (Kai T. Ohlhus)</td><br />
<td>Open Slot</td><br />
<td rowspan="2">SIAM event by EPFL<br/>(To be confirmed. Move it to the first day if you think it would be better)</td><br />
<br />
</tr><br />
<tr><br />
<td>11:25-12:00</td><br />
<td>GSoC project: ode15{i,s}<br/>(Francesco Faccio)</td><br />
<td>The future of the Neural Network package<br/>(Francesco Faccio)</td><br />
</tr><br />
<tr><br />
<td>12:00-12:45</td><br />
<td><strong>Discussion</strong></td><br />
<td><strong>Discussion</strong></td><br />
<td>8/16-bit simulation with GNU Octave (Andreas Stahel)</td>8<br />
</tr><br />
<tr><br />
<td><br/>12:45-14:00<br/><br/></td><br />
<td><strong>Lunch</strong></td><br />
<td><strong>Lunch</strong></td><br />
<td><strong>Lunch</strong></td><br />
</tr><br />
<tr><br />
<td>14:00-14:35</td><br />
<td rowspan="3">Open Slot (Pleanry session: CERN main auditorium)</td><br />
<td rowspan="3">Open Slot (Pleanry session: CERN main auditorium)</td><br />
<td rowspan="3">Visit to CERN sites</td><br />
</tr><br />
<tr><br />
<td>14:35-15:10</td><br />
</tr><br />
<tr><br />
<td>15:10-15:45</td><br />
</tr><br />
<tr><br />
<td>15:45-16:00</td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
</tr><br />
<tr><br />
<td><br/><br/>16:00-18:00<br/><br/><br/></td><br />
<td><strong>Code Sprint</strong></td><br />
<td><strong>Code Sprint</strong></td><br />
<td><strong>Organization of OctConf2018</strong></td><br />
</tr><br />
<tr><br />
<td>18:00-19:00</td><br />
<td rowspan="2">Fondue night (alternative 1)</td><br />
<td rowspan="2">Fondue night (alternative 2)</td><br />
<td rowspan="2">Closing and Farewell</td><br />
</tr><br />
<tr><br />
<td>19:00-20:00</td><br />
</tr><br />
</table><br />
<br />
=== Poster Session ===<br />
<br />
If you have a poster demonstrating how you use Octave to address an application in your field please add your name and poster topic to the list below. We will schedule an appropriately sized space based on the number of posters.<br />
<br />
Confirmed Posters:<br />
<br />
<table class="tg" border="0" width="600" style="text-align: left"><br />
<tr><br />
<th width="400">Title</th><br />
<th width="200">Author</th><br />
</tr><br />
<tr><br />
<td>Fast approximation of complicated simulators</td><br />
<td>[[User:KaKiLa |JuanPi Carbajal]]</td><br />
</tr><br />
<tr><br />
<td>VSDP: Verified SemiDefinite Programming</td><br />
<td>[[User:Siko1056|Kai T. Ohlhus]]</td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr> <br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
</table><br />
<br />
== Participants ==<br />
To register officially, please use the CERN conference manager [https://indico.cern.ch/event/609833/ Indico].<br />
<br />
* [[User:KaKiLa|JuanPi Carbajal]]<br />
* [[User:Francesco Faccio|Francesco Faccio]] (need funding for travel)<br />
* [[User:jwe|John W. Eaton]] (need funding for travel)<br />
* [[User:Doug|Douglas Stewart]]<br />
* [[User:Siko1056|Kai T. Ohlhus]]<br />
* [[User:Oheim|Oliver Heimlich]] (Tuesday–Wednesday)<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:Andy1978|Andreas Weber]] (likely to attend but have to wait for the final okay from employer)<br />
* Valentin Ortega Clavero (likely to attend but have to wait for the final okay from employer)<br />
* Andrea Latina<br />
* Andreas Stahel<br />
* [[User:CdF|Carlo de Falco]] (likely to attend, probably one day only)<br />
* Cristiano Dorigo<br />
* Michele Ginesi<br />
* Chiara Segala<br />
* [[User:pantxo|Pantxo Diribarne]] (likely to attend, probably one day only)<br />
* Marco Caliari (arrival in Monday afternoon)<br />
* Anna Ferrarini<br />
<br />
== Funding ==<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2015]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2018]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2017]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2017&diff=9878OctConf 20172017-02-17T21:00:32Z<p>Carandraug: /* Participants */ confirming</p>
<hr />
<div>We are happy to announce the upcoming Octave Conference 2017 to be held at [http://home.cern CERN], near Geneva, Switzerland, from March 20th until March 22nd. The Local Organising Committee is happy and proud that CERN will host this event for at least two reasons: Octave [2] is a fundamental tool of analysis and research for hundreds of CERN scientists; Octave and CERN share and promote the same values of openness, cooperation, diversity, quality and commitment.<br />
<br />
The three-day event will be an opportunity for sharing experiences, planning the future of Octave and promoting its use among the scientific community and beyond. There will two open sessions on Monday and Tuesday showcasing Octave and some interesting and successful Octave stories.<br />
To register officially, please use the CERN conference manager [https://indico.cern.ch/event/609833/ Indico].<br />
In addition, *please* add your name to the Participants section of this page so we can plan appropriately.<br />
<br />
We are working out the details of the programme, and the call for contributions and abstract is still open. You are all invited to submit an abstract and present your experience with Octave at the conference!<br />
<br />
We are hopeful that the key members of the Octave development team will make it, both from oversea and from Europe. You can find more updated information on the programme in the [https://indico.cern.ch/event/609833 CERN's OctConf webpage] and in here.<br />
<br />
== Dates ==<br />
<br />
The conference will run for three days from Monday, March 20th through Wednesday, March 22nd.<br />
<br />
<br />
== Location ==<br />
<br />
=== Geneva, Switzerland ===<br />
=== Venue ===<br />
The upcoming Octconf 2017 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research)<br />
<br />
At CERN, the European Organization for Nuclear Research, physicists and engineers are probing the fundamental structure of the universe. They use the world's largest and most complex scientific instruments to study the basic constituents of matter – the fundamental particles. The particles are made to collide together at close to the speed of light. The process gives the physicists clues about how the particles interact, and provides insights into the fundamental laws of nature.<br />
The instruments used at CERN are purpose-built particle accelerators and detectors. Accelerators boost beams of particles to high energies before the beams are made to collide with each other or with stationary targets. Detectors observe and record the results of these collisions.<br />
<br />
Founded in 1954, the CERN laboratory sits astride the Franco-Swiss border near Geneva. It was one of Europe's first joint ventures and now has 22 member states.<br />
<br />
=== Social activities ===<br />
<br />
Two social events have been foreseen, besides the coffee and the lunch breaks:<br />
* A unique visit to [http://visit.cern/tours CERN]<br />
* A [https://en.wikipedia.org/wiki/Fondue Fondue] dinner down-town Geneva<br />
<br />
=== Travelling ===<br />
The information below is taken from [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
Please check that link for further details.<br />
<br />
[http://visit.cern/sites/visits.web.cern.ch/files/files/exhibitions/access-map.pdf How to get to CERN infographics]<br />
<br />
CERN Reception - Meyrin<br />
<br />
CERN - European Organization for Nuclear Research<br />
385 route de Meyrin<br />
CH-1217 Meyrin - Geneva<br />
Switzerland<br />
<br />
* GPS Coordinates<br />
Latitude: 46.2314284<br />
<br />
Longitude: 6.0539718<br />
<br />
<br />
==== By train ====<br />
Coming from the Geneva railway station at Cornavin<br />
<br />
Tram - Take the number 18 tram to "CERN" which is the final stop at the CERN entrance.<br />
<br />
Ticket costs 3 CHF full-fare / 2 CHF reduced-fare (Ticket "Tout Genève" on the ticket machine). <br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
==== By car ====<br />
<br />
* From Switzerland<br />
<br />
Follow signs for "Aéroport", "Lyon" and "Meyrin".<br />
<br />
Once you are in Meyrin, follow signs for "St. Genis" (which is just beyond the border, in France). <br />
<br />
Before reaching St Genis, the CERN site is on your left on "Route de Meyrin", just before you reach the border.<br />
<br />
* From France (département of Ain)<br />
<br />
Follow signs for "Gex" or "St. Genis". <br />
When you reach the border, CERN is on your right immediately after passing through customs.<br />
<br />
See [http://visit.cern/exhibitions/how-get-cern-car Parking] for parking information.<br />
<br />
==== By plane ====<br />
Coming from the Geneva International Airport at Cointrin<br />
<br />
Taxi - approximately 35CHF.<br />
<br />
Bus - First take a public transport ticket from the machine you will find at the exit to the baggage collection hall, just before customs control. Then:<br />
<br />
Option 1: Take bus Y direction "CERN" and get off at the CERN stop opposite the large Globe and the CERN site.<br />
<br />
Option 2: Take bus 23, 28 or 57 and get off at the stop "Blandonnet" and then catch the Tram number 18, final stop "CERN".<br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
== Tips and tricks ==<br />
A normal lunch at CERN costs about 15 CHF, inclusive of one coffee and one delicious dessert.<br />
<br />
A bus ride from the airport to CERN is free of charge, if you take a ticket at the vending machine in the baggage claim area. Should you miss that vending machine, a ticket will cost you 3.00 CHF. https://genevalunch.com/guides/travel/the-cheerful-traveler-geneva-airport-public-transport/<br />
<br />
<br />
== Accommodation ==<br />
<br />
The conference will take place in the CERN's main site (Meyrin). You can try your luck and search for an accommodation in one of the [http://smb-dep.web.cern.ch/en/CERN_Housing CERN Hostels].<br />
<br />
Should the CERN hostels be full, or should you prefer to stay in Geneva, we advise you to consult your favourite on-line booking portal (www.booking.com, www.tripadvisor.com, www.trivago.com, www.expedia.com etc.) and to contact the hotel directly in order to identify the lowest tariff available for CERN users and collaborators (preferential tariffs may apply in some cases).<br />
<br />
Hotels in the vicinity of "Gare Cornavin" (Geneva's main railway station), or along "Route de Meyrin", are particularly recommended. Tram number 18 links Gare Cornavin to CERN in 20' (see [http://www.tpg.ch/ timetable on the TPG's webpage]). <br />
<br />
Notice that, by staying in hotel, youth hostel or at a campsite, you are entitled to receive a personal and non transferable Geneva Transport Card for free, which will allow you to use the whole public transportation system of Geneva for the length of your stay for free. This includes buses, trams, trains, and yellow taxi-boats - Mouettes. Just ask for it upon arrival on the reception.<br />
<br />
== Suggestions for Sessions ==<br />
<br />
Approximately half of each day will be devoted to presentations. The remainder will be used for informal discussions, code sprints, etc.<br />
<br />
Please propose session topics in the schedule below. The actual time slot you pick is not important--we can re-arrange the schedule later--but we need to know what topics are of interest.<br />
<br />
In addition, if you have a poster, rather than a full presentation, there is a separate sign-up sheet below.<br />
<br />
=== Schedule ===<br />
During the daytime: CERN offers many areas where people can socialize and/or discuss, informally. For instance, the CERN main restaurant is open until 23:00 (11:00 PM).<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday<br/>(General GNU Octave day)</th><br />
<th width="220">Tuesday<br/>(GNU Octave Packages day)</th><br />
<th width="250">Wednesday<br/>(Libre and Open Source Software day)</th><br />
</tr><br />
<tr><br />
<td>9:00-9:30</td><br />
<td>Open Slot</td><br />
<td>GSoC project: Exponential Integrators<br/>(Chiara Segala)</td><br />
<td rowspan="2">Unconference</td><br />
</tr><br />
<tr><br />
<td>9:30-10:00</td><br />
<td>Open Slot</td><br />
<td>SOCIS project: Improve iterative methods for sparse linear systems<br/>(Cristiano Dorigo)</td><br />
</tr><br />
<tr><br />
<td>10:00-10:15</td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
</tr><br />
<tr><br />
<td>10:15-10:50</td><br />
<td>Designing Particle Accelerators using Octave (A. Latina)</td><br />
<td>Open Slot</td><br />
<td>Unconference</td><br />
</tr><br />
<tr><br />
<td>10:50-11:25</td><br />
<td>[https://www.gnu.org/software/octave/doc/interpreter/XREFpublish.html publish] your code with Octave (Kai T. Ohlhus)</td><br />
<td>Open Slot</td><br />
<td rowspan="2">SIAM event by EPFL<br/>(To be confirmed. Move it to the first day if you think it would be better)</td><br />
<br />
</tr><br />
<tr><br />
<td>11:25-12:00</td><br />
<td>GSoC project: ode15{i,s}<br/>(Francesco Faccio)</td><br />
<td>The future of the Neural Network package<br/>(Francesco Faccio)</td><br />
</tr><br />
<tr><br />
<td>12:00-12:45</td><br />
<td><strong>Discussion</strong></td><br />
<td><strong>Discussion</strong></td><br />
<td>8/16-bit simulation with GNU Octave (Andreas Stahel)</td>8<br />
</tr><br />
<tr><br />
<td><br/>12:45-14:00<br/><br/></td><br />
<td><strong>Lunch</strong></td><br />
<td><strong>Lunch</strong></td><br />
<td><strong>Lunch</strong></td><br />
</tr><br />
<tr><br />
<td>14:00-14:35</td><br />
<td rowspan="3">Open Slot (Pleanry session: CERN main auditorium)</td><br />
<td rowspan="3">Open Slot (Pleanry session: CERN main auditorium)</td><br />
<td rowspan="3">Visit to CERN sites</td><br />
</tr><br />
<tr><br />
<td>14:35-15:10</td><br />
</tr><br />
<tr><br />
<td>15:10-15:45</td><br />
</tr><br />
<tr><br />
<td>15:45-16:00</td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
</tr><br />
<tr><br />
<td><br/><br/>16:00-18:00<br/><br/><br/></td><br />
<td><strong>Code Sprint</strong></td><br />
<td><strong>Code Sprint</strong></td><br />
<td><strong>Organization of OctConf2018</strong></td><br />
</tr><br />
<tr><br />
<td>18:00-19:00</td><br />
<td rowspan="2">Fondue night (alternative 1)</td><br />
<td rowspan="2">Fondue night (alternative 2)</td><br />
<td rowspan="2">Closing and Farewell</td><br />
</tr><br />
<tr><br />
<td>19:00-20:00</td><br />
</tr><br />
</table><br />
<br />
=== Poster Session ===<br />
<br />
If you have a poster demonstrating how you use Octave to address an application in your field please add your name and poster topic to the list below. We will schedule an appropriately sized space based on the number of posters.<br />
<br />
Confirmed Posters:<br />
<br />
<table class="tg" border="0" width="600" style="text-align: left"><br />
<tr><br />
<th width="400">Title</th><br />
<th width="200">Author</th><br />
</tr><br />
<tr><br />
<td>Fast approximation of complicated simulators</td><br />
<td>[[User:KaKiLa |JuanPi Carbajal]]</td><br />
</tr><br />
<tr><br />
<td>VSDP: Verified SemiDefinite Programming</td><br />
<td>[[User:Siko1056|Kai T. Ohlhus]]</td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr> <br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
</table><br />
<br />
== Participants ==<br />
To register officially, please use the CERN conference manager [https://indico.cern.ch/event/609833/ Indico].<br />
<br />
* [[User:KaKiLa|JuanPi Carbajal]]<br />
* [[User:Francesco Faccio|Francesco Faccio]] (need funding for travel)<br />
* [[User:jwe|John W. Eaton]] (need funding for travel)<br />
* [[User:Doug|Douglas Stewart]]<br />
* [[User:Siko1056|Kai T. Ohlhus]]<br />
* [[User:Oheim|Oliver Heimlich]] (Tuesday–Wednesday)<br />
* [[User:Carandraug|Carnë Draug]]<br />
* [[User:Andy1978|Andreas Weber]] (likely to attend but have to wait for the final okay from employer)<br />
* Valentin Ortega Clavero (likely to attend but have to wait for the final okay from employer)<br />
* Andrea Latina<br />
* Andreas Stahel<br />
* [[User:CdF|Carlo de Falco]] (likely to attend, probably one day only)<br />
* Cristiano Dorigo<br />
* Michele Ginesi<br />
* Chiara Segala<br />
* [[User:pantxo|Pantxo Diribarne]] (likely to attend, probably one day only)<br />
* Marco Caliari (arrival in Monday afternoon)<br />
* Anna Ferrarini<br />
<br />
== Funding ==<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2015]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2018]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2017]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=User_talk:Carandraug&diff=9856User talk:Carandraug2017-02-08T13:36:30Z<p>Carandraug: /* Database down? */ reply with link to mailing list</p>
<hr />
<div>== Database down? ==<br />
<br />
I can't read [[FAQ]] here. Is there anything wrong with the database?--[[User:Franklin Yu|Franklin Yu]] ([[User talk:Franklin Yu|talk]]) 01:48, 8 February 2017 (PST)<br />
<br />
: Please use the [https://lists.gnu.org/mailman/listinfo/help-octave octave help mailing list]. We don't really use the wiki for discussions. --[[User:Carandraug|carandraug]] ([[User talk:Carandraug|talk]]) 05:36, 8 February 2017 (PST)</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Talk:Help_text_style_guide&diff=9831Talk:Help text style guide2017-02-05T12:43:31Z<p>Carandraug: /* Yes-or-no flag */</p>
<hr />
<div>== Yes-or-no flag ==<br />
<br />
Shouldn't we use [https://www.mathworks.com/help/matlab/logical-operations.html logical] instead of a double for such variable? --[[User:Franklin Yu|Franklin Yu]] ([[User talk:Franklin Yu|talk]]) 01:52, 5 February 2017 (PST)<br />
<br />
: That is not a point for the help text, it is the behaviour of individual functions. The fact is that pretty much all functions will simply check if the value is non-zero. --[[User:Carandraug|carandraug]] ([[User talk:Carandraug|talk]]) 04:43, 5 February 2017 (PST)</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2017&diff=9825OctConf 20172017-02-04T15:13:42Z<p>Carandraug: /* Participants */ add date of confirmartion]</p>
<hr />
<div>OctConf 2017 will take place at CERN, Geneva, Switzerland for three days from March 20 through March 22. <br />
To register officially, please use the CERN conference manager [https://indico.cern.ch/event/609833/ Indico].<br />
In addition, *please* add your name to the Participants section of this page so we can plan appropriately.<br />
<br />
== Location ==<br />
<br />
=== Geneva, Switzerland ===<br />
=== Venue ===<br />
The upcoming Octconf 2017 will take place at [http://home.cern/ CERN] (European Center for Nuclear Research)<br />
<br />
At CERN, the European Organization for Nuclear Research, physicists and engineers are probing the fundamental structure of the universe. They use the world's largest and most complex scientific instruments to study the basic constituents of matter – the fundamental particles. The particles are made to collide together at close to the speed of light. The process gives the physicists clues about how the particles interact, and provides insights into the fundamental laws of nature.<br />
The instruments used at CERN are purpose-built particle accelerators and detectors. Accelerators boost beams of particles to high energies before the beams are made to collide with each other or with stationary targets. Detectors observe and record the results of these collisions.<br />
<br />
Founded in 1954, the CERN laboratory sits astride the Franco-Swiss border near Geneva. It was one of Europe's first joint ventures and now has 22 member states.<br />
<br />
=== Travelling ===<br />
The information below is taken from [http://visit.cern/exhibitions/how-get-cern CERN instructions].<br />
Please check that link for further details.<br />
<br />
[http://visit.cern/sites/visits.web.cern.ch/files/files/exhibitions/access-map.pdf How to get to CERN infographics]<br />
<br />
CERN Reception - Meyrin<br />
<br />
CERN - European Organization for Nuclear Research<br />
385 route de Meyrin<br />
CH-1217 Meyrin - Geneva<br />
Switzerland<br />
<br />
* GPS Coordinates<br />
Latitude: 46.2314284<br />
<br />
Longitude: 6.0539718<br />
<br />
<br />
==== By train ====<br />
Coming from the Geneva railway station at Cornavin<br />
<br />
Tram - Take the number 18 tram to "CERN" which is the final stop at the CERN entrance.<br />
<br />
Ticket costs 3 CHF full-fare / 2 CHF reduced-fare (Ticket "Tout Genève" on the ticket machine). <br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
==== By car ====<br />
<br />
* From Switzerland<br />
<br />
Follow signs for "Aéroport", "Lyon" and "Meyrin".<br />
<br />
Once you are in Meyrin, follow signs for "St. Genis" (which is just beyond the border, in France). <br />
<br />
Before reaching St Genis, the CERN site is on your left on "Route de Meyrin", just before you reach the border.<br />
<br />
* From France (département of Ain)<br />
<br />
Follow signs for "Gex" or "St. Genis". <br />
When you reach the border, CERN is on your right immediately after passing through customs.<br />
<br />
See [http://visit.cern/exhibitions/how-get-cern-car Parking] for parking information.<br />
<br />
==== By plane ====<br />
Coming from the Geneva International Airport at Cointrin<br />
<br />
Taxi - approximately 35CHF.<br />
<br />
Bus - First take a public transport ticket from the machine you will find at the exit to the baggage collection hall, just before customs control. Then:<br />
<br />
Option 1: Take bus Y direction "CERN" and get off at the CERN stop opposite the large Globe and the CERN site.<br />
<br />
Option 2: Take bus 23, 28 or 57 and get off at the stop "Blandonnet" and then catch the Tram number 18, final stop "CERN".<br />
<br />
See the [http://www.tpg.ch/ TPG] web site for full details.<br />
<br />
== Dates ==<br />
<br />
The conference will run for three days from Monday, March 20th through Wednesday, March 22nd.<br />
<br />
== Suggestions for Sessions ==<br />
<br />
Approximately half of each day will be devoted to presentations. The remainder will be used for informal discussions, code sprints, etc.<br />
<br />
Please propose session topics in the schedule below. The actual time slot you pick is not important--we can re-arrange the schedule later--but we need to know what topics are of interest.<br />
<br />
In addition, if you have a poster, rather than a full presentation, there is a separate sign-up sheet below.<br />
<br />
=== Schedule ===<br />
During the daytime: CERN offers many areas where people can socialize and/or discuss, informally. For instance, the CERN main restaurant is open until 23:00 (11:00 PM).<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday<br/>(General GNU Octave day)</th><br />
<th width="220">Tuesday<br/>(GNU Octave Packages day)</th><br />
<th width="250">Wednesday<br/>(Libre and Open Source Software day)</th><br />
</tr><br />
<tr><br />
<td>9:00-9:30</td><br />
<td>Open Slot</td><br />
<td>Open Slot</td><br />
<td rowspan="2">Unconference</td><br />
</tr><br />
<tr><br />
<td>9:30-10:00</td><br />
<td>Open Slot</td><br />
<td>Open Slot</td><br />
</tr><br />
<tr><br />
<td>10:00-10:15</td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
</tr><br />
<tr><br />
<td>10:15-10:50</td><br />
<td>Open Slot</td><br />
<td>Open Slot</td><br />
<td rowspan="4">Unconference</td><br />
</tr><br />
<tr><br />
<td>10:50-11:25</td><br />
<td>[https://www.gnu.org/software/octave/doc/interpreter/XREFpublish.html publish] your code with Octave (Kai T. Ohlhus)</td><br />
<td>Open Slot</td><br />
</tr><br />
<tr><br />
<td>11:25-12:00</td><br />
<td>GSoC project: ode15{i,s}<br/>(Francesco Faccio)</td><br />
<td>Open Slot</td><br />
</tr><br />
<tr><br />
<td>12:00-12:30</td><br />
<td><strong>Discussion</strong></td><br />
<td><strong>Discussion</strong></td><br />
</tr><br />
<tr><br />
<td><br/>12:30-14:00<br/><br/></td><br />
<td><strong>Lunch</strong></td><br />
<td><strong>Lunch</strong></td><br />
<td><strong>Lunch</strong></td><br />
</tr><br />
<tr><br />
<td>14:00-14:35</td><br />
<td rowspan="3">Open Slot (Pleanry session: CERN main auditorium)</td><br />
<td rowspan="3">Open Slot (Pleanry session: CERN main auditorium)</td><br />
<td rowspan="3">Visit to CERN sites</td><br />
</tr><br />
<tr><br />
<td>14:35-15:10</td><br />
</tr><br />
<tr><br />
<td>15:10-15:45</td><br />
</tr><br />
<tr><br />
<td>15:45-16:00</td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
</tr><br />
<tr><br />
<td><br/><br/>16:00-18:00<br/><br/><br/></td><br />
<td><strong>Code Sprint</strong></td><br />
<td><strong>Code Sprint</strong></td><br />
<td><strong>Organization of OctConf2018</strong></td><br />
</tr><br />
<tr><br />
<td>18:00-19:00</td><br />
<td rowspan="2">Fondue night (alternative 1)</td><br />
<td rowspan="2">Fondue night (alternative 2)</td><br />
<td rowspan="2">Closing and Farewell</td><br />
</tr><br />
<tr><br />
<td>19:00-20:00</td><br />
</tr><br />
</table><br />
<br />
=== Poster Session ===<br />
<br />
If you have a poster demonstrating how you use Octave to address an application in your field please add your name and poster topic to the list below. We will schedule an appropriately sized space based on the number of posters.<br />
<br />
Confirmed Posters:<br />
<br />
<table class="tg" border="0" width="600" style="text-align: left"><br />
<tr><br />
<th width="400">Title</th><br />
<th width="200">Author</th><br />
</tr><br />
<tr><br />
<td>Fast approximation of complicated simulators</td><br />
<td>[[User:KaKiLa |JuanPi Carbajal]]</td><br />
</tr><br />
<tr><br />
<td>VSDP: Verified SemiDefinite Programming</td><br />
<td>[[User:Siko1056|Kai T. Ohlhus]]</td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr> <br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
</table><br />
<br />
== Participants ==<br />
To register officially, please use the CERN conference manager [https://indico.cern.ch/event/609833/ Indico].<br />
<br />
* [[User:KaKiLa|JuanPi Carbajal]]<br />
* [[User:Francesco Faccio|Francesco Faccio]] (need funding for travel)<br />
* [[User:jwe|John W. Eaton]] (need funding for travel)<br />
* [[User:rik|Rik]] (need funding for travel)<br />
* [[User:Doug|Douglas Stewart]]<br />
* [[User:Siko1056|Kai T. Ohlhus]]<br />
* [[User:Oheim|Oliver Heimlich]] (probably only 2 days, waits for permission from wife)<br />
* [[User:Carandraug|Carnë Draug]] (likely to attend but unsure. Will only be able to confirm on the 10th of February)<br />
* [[User:Andy1978|Andreas Weber]] (likely to attend but have to wait for the final okay from employer)<br />
* Valentin Ortega Clavero (likely to attend but have to wait for the final okay from employer)<br />
<br />
== Funding ==<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2015]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2018]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2017]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Publications_using_Octave&diff=9798Publications using Octave2017-02-02T14:57:15Z<p>Carandraug: /* 2015 */ Drosophila Ana1 is required for centrosome assembly and centriole elongation</p>
<hr />
<div>=Books=<br />
<br />
* [http://www.network-theory.co.uk/octave/manual/ GNU Octave Manual Version 3], 2011, ISBN 0-9546120-6-X<br />
* [http://dx.doi.org/10.1007/978-3-642-12430-3 Scientific Computing with MATLAB and Octave], 2010, ISBN 978-3-642-12429-7<br />
* [http://dx.doi.org/10.1007/978-3-642-20820-1_1 Numerical Methods for the Life Scientist], 2011, ISBN 978-3-642-20819-5<br />
* [http://www.packtpub.com/gnu-octave-beginners-guide/book GNU Octave Beginners Guide], 2011, ISBN 1849513325<br />
* [http://www.nobhillpublishing.com/chemreacfun/index-chemreacfun.html Chemical Reactor Analysis and Design Fundamentals], 2009, ISBN 978-0-615-11884-0<br />
* [http://www.nobhillpublishing.com/mpc/index-mpc.html Model Predictive Control: Theory and Design], 2009, ISBN 978-0-9759377-0-9<br />
* [http://web.ncf.ca/en493/STUDENT_LINUX/INTRODUCTION_OCTAVE.pdf An Introduction to Octave for High School and University Students], 2014.08, ISBN 978-0-9693002-9-8. ``Permission is given to distribute ... on a strictly non-comercial basis .... educational institutions and student organizations ...cost plus basis.'' [submitted by Roger Herz-Fischler, author and copyright holder; only available---for free---on-line]<br />
<br />
=Articles=<br />
<br />
The following list contains articles that used GNU Octave. <br />
Older articles were collected automatically and they might <br />
appear in the list only because they cite the <br />
[http://www.gnu.org/software/octave/doc/interpreter/index.html GNU Octave Manual], <br />
we are checking these publications manually, those that have been checked and confirmed are marked with "!"<br />
those marked with a "?" could not be checked due to access restrictions.<br />
<br />
Besides the articles listed here,<br />
the information service for mathematical software<br />
[http://www.swmath.org/software/646 swMATH]<br />
lists '''about 130 publications''' using GNU Octave.<br />
<br />
== Pre-prints ==<br />
* Preprint arXiv:1609.08395 [https://arxiv.org/abs/1609.08395 Appraisal of data-driven and mechanistic emulators of nonlinear hydrodynamic urban drainage simulators]!<br />
* Preprint arXiv:1108.3206v2 [http://arxiv.org/abs/1108.3206 Modeling and frequency domain analysis of nonlinear compliant joints for a passive dynamic swimmer]!<br />
* Technical Report UBLCS-2012-02 [http://www.informatica.unibo.it/ricerca/technical-report/2012/UBLCS-2012-02 Queueing Networks Analysis with the qnetworks Toolbox] !<br />
* Preprint arXiv:1109.0397 [http://arxiv.org/abs/1109.0397 Auction-Based Resource Allocation in Digital Ecosystems] ([http://www.moreno.marzolla.name/publications/papers/1109.0397v1.zip Scripts] used in the paper) !<br />
* Technical Report UBLCS-2011-04 [http://www.informatica.unibo.it/ricerca/technical-report/2011/UBLCS-2011-04 Dynamic Power Management for QoS-Aware Applications] ([http://www.moreno.marzolla.name/publications/papers/UBLCS-2011-04.tar.gz Scripts] and data files used in the paper) !<br />
* Preprint arXiv:1104.5392 [http://arxiv.org/abs/1104.5392 A Framework for QoS-aware Execution of Workflows over the Cloud], to appear in proc. CLOSER 2012 ([http://www.moreno.marzolla.name/publications/papers/1104.5392v1.m Script] used in the paper) !<br />
* Technical Report UBLCS-2010-12 [http://www.informatica.unibo.it/ricerca/technical-report/2010/UBLCS-2010-12 Dynamic Scalability for Next Generation Gaming Infrastructures], to appear in ACM Computers in Entertainment ([http://www.moreno.marzolla.name/publications/papers/UBLCS-2010-12.m Script] used in the paper) !<br />
* Preprint arXiv: 1604.01284 [http://arxiv.org/abs/1604.01284 Non-Existence of Theta-Shaped Self-Similarly Shrinking Networks Moving by Curvature]!<br />
<br />
== 2016 ==<br />
* Journal of Open Research Software. [http://dx.doi.org/10.5334/jors.112 SeFo: A Package for Generating Probabilistic Forecasts from NMME Predictive Ensembles]<br />
* 19th International Conference on Medical Image Computing and Computer-Assisted Intervention (MICCAI) 2016 Oct 17, Athens, Greece. [http://dx.doi.org/10.1007/978-3-319-46723-8_42 Orientation-Sensitive Overlap Measures for the Validation of Medical Image Segmentations]<br />
<br />
== 2015 ==<br />
* Memristor models for Machine Learning. [http://www.mitpressjournals.org/doi/abs/10.1162/NECO_a_00694?journalCode=neco#.VgFM79tSuko Neural Computation]<br />
* Environmental Research Letters. [http://iopscience.iop.org/1748-9326/10/2/024014/ Up-to-date probabilistic temperature climatologies]. Associated code available [https://bitbucket.org/niryk/logocline here]<br />
* 12th Int. Conference on Information Technology: New Generations (ITNG'2015), April 13-15, 2015, Las Vegas, USA [http://dx.doi.org/10.1109/ITNG.2015.93 A Multiple View Interactive Environment to Support MATLAB and GNU/Octave Program Comprehension]<br />
* 15th Int. Conference on Computational Science and Its Applications (ICCSA’2015), June 22-25, 2015, Banff, Canada [http://dx.doi.org/10.1007/978-3-319-21410-8_49 On the Use of a Multiple View Interactive Environment for MATLAB and Octave Program Comprehension] <br />
* 27th Int. Conference on Software Engineering and Knowledge Engineering (SEKE’2015), July 6-8, 2015, Pittsburgh, USA [http://ksiresearchorg.ipage.com/seke/seke15paper/seke15paper_73.pdf Scaffolding MATLAB and Octave Software Comprehension Through Visualization]<br />
* Journal of Biomolecular Structure and Dynamics [http://www.tandfonline.com/doi/full/10.1080/07391102.2014.1003603 Kinetic simulation of malate-aspartate and citrate-pyruvate shuttles in association with Krebs cycle]<br />
* EDN [http://www.edn.com/design/test-and-measurement/4440068/Real-Spectrum-Analysis-with-Octave-and-MATLAB Real Spectrum Analysis With Octave]<br />
* EDN [http://www.edn.com/design/analog/4440674/Read-serial-data-directly-into-Octave Read serial data directly into Octave]<br />
* [http://bio.biologists.org/content/4/8/1052 Saurya, Saroj, Hélio Roque, Zsofia A. Novak, Alan Wainman, Mustafa G. Aydogan, Adam Volanakis, Boris Sieber, David Miguel Susano Pinto, and Jordan W. Raff. "Drosophila Ana1 is required for centrosome assembly and centriole elongation." J Cell Sci 129, no. 13 (2016): 2514-2525]<br />
<br />
== 2014 ==<br />
* NVIDIA developer zone [http://devblogs.nvidia.com/parallelforall/drop-in-acceleration-gnu-octave/ Drop-in Acceleration of GNU Octave]<br />
* Neural Computation. Memristor models for machine learning, [http://arxiv.org/abs/1406.2210 in press].!<br />
* Journal of Applied Biomechanics [http://dx.doi.org/10.1123/jab.2013-0062 Correction of Joint Angles From Kinect for Balance Exercising and Assessment]<br />
* Journal of Biomechanics. [http://dx.doi.org/10.1016/j.jbiomech.2014.02.003 Point of optimal kinematic error: Improvement of the instantaneous helical pivot method for locating centers of rotation]<br />
* Frontiers in Computational Neurosciences. [http://www.frontiersin.org/Computational_Neuroscience/10.3389/fncom.2013.00191/abstract A computational analysis of motor synergies by dynamic response decomposition] !<br />
* Environmental Research Letters. [http://dx.doi.org/10.1088/1748-9326/9/2/024009 Are climate model simulations useful for forecasting precipitation trends? Hindcast and synthetic-data experiments] !<br />
* Sustainability. [http://dx.doi.org/10.3390/su6031448 Economic growth assumptions in climate and energy policy] !<br />
* Mathematical Problems in Engineering. [http://www.hindawi.com/journals/mpe/2014/843869/ Cross-Gramian-Based Combined State and Parameter Reduction for Large-Scale Control Systems]<br />
* 11th International Conference on Quantitative Evaluation of Systems (QEST), Florence, Italy, September 8-10, 2014, [http://dx.doi.org/10.1007/978-3-319-10696-0_14 The Octave Queueing package]<br />
* International Conference on Web & Open Access to Learning, Dubai, Nov 2014, [http://dx.doi.org/10.1109/ICWOAL.2014.7009222 Webdemos: An Interactive, Web-Based Visualization and Simulation Framework for Open Access]<br />
* Journal of Biomolecular Structure and Dynamics [http://www.tandfonline.com.docelec.univ-lyon1.fr/doi/full/10.1080/07391102.2012.762723 Modelling the Krebs cycle and oxidative phosphorylation]<br />
<br />
== 2013 ==<br />
<br />
* Journal of Mathematics [http://dx.doi.org/10.1155/2013/365909 A Unified Software Framework for Empirical Gramians]<br />
* Langmuir [http://dx.doi.org/10.1021/la305136q Dependence of Bicellar System Phase Behavior and Dynamics on Anionic Lipid Concentration] !<br />
* Computer Physics Communications [http://dx.doi.org/10.1016/j.cpc.2012.10.007 GSGPEs: a MATLAB code for computing the ground state of systems of Gross-Pitaevskii equations] !<br />
* ACM Transactions on Mathematical Software [http://dx.doi.org/10.1016/10.1145/2427023.2427024 NLEVP: A collection of nonlinear eigenvalue problems] !<br />
* Computational Optimization and Applications [http://dx.doi.org/10.1007/s10589-012-9488-5 A practical but rigorous approach to sum-of-ratios optimization in geometric applications] !<br />
* SIAM Journal on Matrix Analysis and Applications [http://dx.doi.org/10.1137/11082498X On a zero-finding problem involving the matrix exponential] ?<br />
* PLoS Computational Biology [http://dx.doi.org/10.1371/journal.pcbi.1002864 Effects of Ligand Binding on the Mechanical Properties of Ankyrin Repeat Protein Gankyrin] !<br />
* Physical Review E [http://dx.doi.org/10.1103/PhysRevE.87.042132 Rare regions of the susceptible-infected-susceptible model on Barabási-Albert networks] ?<br />
* Engineering Optimization [http://dx.doi.org/10.1080/0305215X.2012.675060 Constrained optimization using a multipoint type chaotic Lagrangian method with a coupling structure] !<br />
* Journal of Lightwave Technology [http://dx.doi.org/10.1109/JLT.2013.2245399 A meshless based solution to vectorial mode fields in optical micro-structured waveguides using leaky boundary conditions] !<br />
* Analytical Chemistry [http://dx.doi.org/10.1021/ac303552s Infrared Spectroscopy with Heated Attenuated Total Internal Reflectance Enabling Precise Measurement of Thermally Induced Transitions in Complex Biological Polymers] !<br />
* VLSI Design [http://dx.doi.org/10.1155/2013/861691 Hardware acceleration of Beamforming in a UWB imaging unit for breast cancer detection] !<br />
* Journal of Machine Learning Research [http://jmlr.csail.mit.edu/papers/v14/vanhatalo13a.html GPstuff: Bayesian Modeling with Gaussian Processes]<br />
<br />
== 2012 ==<br />
* IEEE Transactions on Services Computing, 09 Aug. 2012. IEEE computer Society Digital Library. IEEE Computer Society, [http://www.computer.org/csdl/trans/sc/2013/04/tsc2013040511-abs.html Parametric Design and Performance Analysis of a Decoupled Service-Oriented Prediction Framework based on Embedded Numerical Software]!<br />
* Journal of Process Control, 2012, [http://dx.doi.org/10.1016/j.jprocont.2012.04.006 GNU Octave and reproducible research] !<br />
* Advances in Meteorology, 2012, [http://dx.doi.org/10.1155/2012/404876 Estimating climate trends: Application to United States plant hardiness zones] !<br />
* Comput. Methods Appl. Mech. Engrg., 2012, [http://dx.doi.org/10.1016/j.cma.2012.06.018 Multiscale Modeling and Simulation of Organic Solar Cells] (Also available [http://arxiv.org/abs/1206.1440 at arXiv]) !<br />
* 12th Int. Conf. on Adaptive Behaviour (2012). [http://arxiv.org/abs/1205.3668 Synthesis and Adaptation of Effective Motor Synergies for the Solution of Reaching Tasks].([https://files.ifi.uzh.ch/ailab/people/carbajal/DRD/drd.html package] used for this publication). [http://www.springerlink.com/content/j352m8451x546q07/ Official site]!<br />
* Communications in Computational Physics [http://dx.doi.org/10.4208/cicp.190311.270112a System reduction using an LQR-inspired version of Optimal Replacement Variables] !<br />
* Biophysical Journal [http://dx.doi.org/10.1016/j.bpj.2012.04.051 Locomotion control of Caenorhabditis elegans through confinement] !<br />
* Simulation Modelling Practice and Theory [http://dx.doi.org/10.1016/j.simpat.2012.02.005 Development and implementation of hydro turbine and governor models in a free and open source software package] !<br />
* Journal of Biomechanical Engineering [http://dx.doi.org/10.1115/1.4005849 Syrinx fluid transport: Modeling pressure-wave-induced flux across the spinal pial membrane] !<br />
* Journal of Chemical Theory and Computation [http://dx.doi.org/10.1021/ct200911w Construction of the free energy landscape of peptide aggregation from molecular dynamics simulations] !<br />
* Modern Physics Letters B [http://dx.doi.org/10.1142/S0217984912500558 Dynamics on multilayered hyperbranched fractals through continuous time random walks] !<br />
* IEEE Nuclear Science Symposium Conference Record [http://dx.doi.org/10.1109/NSSMIC.2011.6153827 Dose-free monitoring of radiotherapy treatments with scattered photons: First experimental results at a 6-MV Linac] !<br />
* Journal of Physics: Conference Series [http://dx.doi.org/10.1088/1742-6596/341/1/012032 Integration of a neuroimaging processing pipeline into a pan-canadian computing grid] !<br />
* Journal of Nanomaterials [http://dx.doi.org/10.1155/2012/109238 Design and construction of a one-dimensional DNA track for an artificial molecular motor] !<br />
* Computing in Science and Engineering [http://dx.doi.org/10.1109/MCSE.2012.18 Applications of computational science: Data-intensive computing for student projects] !<br />
* Advances in OptoElectronics [http://dx.doi.org/10.1155/2012/782150 Fundamental issues in manufacturing photovoltaic modules beyond the current generation of materials] !<br />
* IEEE Transactions on Fuzzy Systems [http://dx.doi.org/10.1109/TFUZZ.2011.2168406 Zadehs extension principle for continuous functions of non-interactive variables: A parallel optimization approach] !<br />
* Methods in Enzymology [http://dx.doi.org/10.1016/B978-0-12-391857-4.00020-3 Open source tools for fluorescent imaging] !<br />
* Computer Physics Communications [http://dx.doi.org/10.1016/j.cpc.2011.08.003 An open-source library for the numerical modeling of mass-transfer in solid oxide fuel cells] !<br />
<br />
== 2011 ==<br />
* Phys. Rev. E 83, 066707 (2011), [http://link.aps.org/doi/10.1103/PhysRevE.83.066707 Exploiting the passive dynamics of a compliant leg to develop gait transitions] !<br />
* Journal of Fluid Mechanics, volume 681, (2011), pp. 622-638. [http://www.math.missouri.edu/~stephen/preprints/jeff-stokes.html Perturbations of the coupled Jeffery-Stokes equations] !<br />
* International Journal for Numerical Methods in Fluids, 65(11-12):1407–1422, 2011 [http://dx.doi.org/10.1002/fld.2337 Isogeometric analysis: Stable elements for the 2d stokes equation] !<br />
* Numerical Algorithms, 56(1):107–127, January 2011, [http://dx.doi.org/10.1007/s11075-010-9376-y A parameter robust Petrov-Galerkin scheme for advection-diffusion-reaction equations] !<br />
* Advances in Engineering Software, 42(12):1020–1034, 2011, [http://dx.doi.org/10.1016/j.advengsoft.2011.06.010 Geopdes: A research tool for IsoGeometric Analysis of PDEs]. ([http://geopdes.sf.net Octave package] discussed in this publication) !<br />
* Int. J. of Performability Engineering, 7(5):479–492, 2011 [http://www.ijpe-online.com/september-2011-p7-parsy-performance-aware-reconfiguration-of-software-systems.html PARSY: Performance-Aware Reconfiguration of Software Systems] !<br />
* IEEE Trans. Antennas and Propagation, 59(6):2047-2057, 2011, [http://dx.doi.org/10.1109/TAP.2011.2122231 Demonstration of a Dual-Polarized Phased-Array Feed] !<br />
* IEEE International Symposium on Parallel and Distributed Processing Workshops and Phd Forum [http://dx.doi.org/10.1109/IPDPS.2011.389 p2 Matlab: Productive parallel matlab for the exascale] !<br />
* Journal of Machine Learning Research [http://www.stanford.edu/~ngoodman/papers/WSG-AIStats11.pdf Lightweight implementations of probabilistic programming languages via transformational compilation] !<br />
* Proceedings of the ASME Design Engineering Technical Conference [http://dx.doi.org/10.1115/DETC2011-48228 uBlasCL: Architecture agnostic massively parallel Linear Algebra system]<br />
* Proceedings - 2011 IEEE Electronics, Robotics and Automotive Mechanics Conference, CERMA 2011 [http://dx.doi.org/10.1109/CERMA.2011.28 Analysis of AVI files for mice behavior experiments in the Morris water maze] !<br />
* Earthquake and Structures [http://md1.csa.com/partners/viewrecord.php?requester=gs&collection=TRD&recid=16153490EQ Reconstruction of missing response data for identification of higher modes] ?<br />
* 2011 IEEE International Conference on Robotics and Biomimetics, ROBIO 2011 [http://dx.doi.org/10.1109/ROBIO.2011.6181612 From walking to running a natural transition in the SLIP model using the hopping gait] !<br />
* Applied Bionics and Biomechanics [http://dx.doi.org/10.3233/ABB-2011-0023 Teletactile system based on mechanical properties estimation] ?<br />
* Proceedings of the National Academy of Sciences of the United States of America [http://dx.doi.org/10.1073/pnas.1012168108 Mean-field modeling of thalamocortical dynamics and a model-driven approach to EEG analysis] !<br />
* Nucleic Acids Research [http://dx.doi.org/10.1093/nar/gkr422 A quantitative model of nucleosome dynamics] !<br />
* Wiener Medizinische Wochenschrift [http://dx.doi.org/10.1007/s10354-011-0904-8 Role of optimization criterion in static asymmetric analysis of lumbar spine load] !<br />
* Journal of Composite Materials [http://dx.doi.org/10.1177/0021998311401084 Micro-mechanical prediction of UD laminates behavior under combined compression up to failure: Influence of matrix degradation] !<br />
* Journal of Neuroscience Methods [http://dx.doi.org/10.1016/j.jneumeth.2011.05.009 Calcium signals: Analysis in time and frequency domains] !<br />
* Proceedings - Annual Workshop on Interaction between Compilers and Computer Architectures, INTERACT [http://dx.doi.org/10.1109/INTERACT.2011.18 MATLAB parallelization through scalarization] !<br />
* 2011 Promotion and Innovation with New Technologies in Engineering Education, FINTDI 2011, Conference Proceedings [http://dx.doi.org/10.1109/FINTDI.2011.5936420 A review of teaching power system harmonics] !<br />
* Physical Review E - Statistical, Nonlinear, and Soft Matter Physics [http://dx.doi.org/10.1103/PhysRevE.84.011916 Automatic recovery of missing amplitudes and phases in tilt-limited electron crystallography of two-dimensional crystals] !<br />
* Communications in Computer and Information Science [http://dx.doi.org/10.1007/978-3-642-21771-5_9 Analysis of time measurements in network systems using decomposition on subprocesses] ?<br />
* Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI) [http://dx.doi.org/10.1145/1993498.1993517 Automatic compilation of MATLAB programs for synergistic execution on heterogeneous processors] !<br />
* Journal of Aerospace Engineering [http://dx.doi.org/10.1061/(ASCE)AS.1943-5525.0000083 Experiments and cohesive zone model parameters for T650/AFR-PE-4/FM680-1 at high temperatures] ?<br />
* Proceedings of the IEEE [http://dx.doi.org/10.1109/JPROC.2010.2103291 Enabling accurate cross-layer PHY/MAC/NET simulation studies of vehicular communication networks]<br />
* Journal of Mathematics and Music [http://dx.doi.org/10.1080/17459737.2011.614732 A few more words about James Tenney: Dissonant counterpoint and statistical feedback]<br />
* Applied Optics [http://dx.doi.org/10.1364/AO.50.003205 On the importance of path for phase unwrapping in synthetic aperture radar interferometry]<br />
* Physical Review E - Statistical, Nonlinear, and Soft Matter Physics [http://dx.doi.org/10.1103/PhysRevE.83.066707 Exploiting the passive dynamics of a compliant leg to develop gait transitions]<br />
* BMC Systems Biology [http://dx.doi.org/10.1186/1752-0509-5-97 Automated Bayesian model development for frequency detection in biological time series]<br />
* Journal of Wind Engineering and Industrial Aerodynamics [http://dx.doi.org/10.1016/j.jweia.2011.03.006 Fractional spectral moments for digital simulation of multivariate wind velocity fields]<br />
* Advances in Applied Probability [http://dx.doi.org/10.1239/aap/1308662485 Approximation of bounds on mixed-level orthogonal arrays]<br />
* Electrochimica Acta [http://dx.doi.org/10.1016/j.electacta.2011.02.098 Reducing error and measurement time in impedance spectroscopy using model based optimal experimental design] !<br />
* Biomacromolecules [http://dx.doi.org/10.1021/bm200167n Infrared linear dichroism spectroscopy on amyloid fibrils aligned by molecular combing]<br />
* Chemical Science [http://dx.doi.org/10.1039/c0sc00423e Conformational states of nucleic acid-peptide complexes monitored by acoustic wave propagation and molecular dynamics simulation] <br />
* Journal of the Acoustical Society of America [http://dx.doi.org/10.1121/1.3569714 Estimating the control parameters of an articulatory model from electromagnetic articulograph data] !<br />
* Fuzzy Sets and Systems [http://dx.doi.org/10.1016/j.fss.2011.01.003 Decision tree based fuzzy classifier of 1H magnetic resonance spectra from cerebrospinal fluid samples] !<br />
* Computational Management Science [http://dx.doi.org/10.1007/s10287-009-0110-y Shape-based scenario generation using copulas] !<br />
* 2011 4th IFIP International Conference on New Technologies, Mobility and Security, NTMS 2011 - Proceedings [http://dx.doi.org/10.1109/NTMS.2011.5720629 Adaptive fuzzy-MAC for power reduction in Wireless Sensor Networks] !<br />
* Communications in Computational Physics [http://dx.doi.org/10.4208/cicp.271109.150710s Reduction of linear systems of ODEs with optimal replacement variables] !<br />
* Optics Express [http://dx.doi.org/10.1364/OE.19.003284 Longitudinal mode multistability in Ring and Fabry-Pérot lasers: The effect of Spatial Hole Burning] !<br />
* Journal of Chemical Physics [http://dx.doi.org/10.1063/1.3533361 Photoelectron imaging of several 5d and 6p Rydberg states Xe 2 and improving the Xe 2 + I(12g) potential] !<br />
* Chemical Physics Letters [http://dx.doi.org/10.1016/j.cplett.2010.12.028 Analysis of motion features for molecular dynamics simulation of proteins] !<br />
* Journal of Physical Chemistry B [http://dx.doi.org/10.1021/jp108059x In silico predictions of the temperature-dependent viscosities and electrical conductivities of functionalized and nonfunctionalized ionic liquids] !<br />
* Journal of Molecular Biology [http://dx.doi.org/10.1016/j.jmb.2010.08.058 Probing designability via a generalized model of helical bundle geometry] !<br />
* Numerical Algorithms [http://dx.doi.org/10.1007/s11075-010-9373-1 Padua2DM: fast interpolation and cubature at the Padua points in Matlab/Octave] !<br />
<br />
== 2010 ==<br />
* Services Computing (SCC), 2010 IEEE International Conference on , vol., no., pp.114-121, 5-10 July 2010,doi: 10.1109/SCC.2010.37 [http://www.computer.org/csdl/proceedings/scc/2010/4126/00/4126a114-abs.html A Service-Oriented Framework for GNU Octave-Based Performance Prediction]!<br />
* Wireless Networks, Vol. 16, No. 2, pp. 355-365, February 2010, [http://dx.doi.org/10.1007/s11276-008-0136-z Allocating data for broadcasting over wireless channels subject to transmission errors] !<br />
* Int. J. Numer. Anal. Model., 7(4):444–461, 2010, [http://www.math.ualberta.ca/ijnam/Volume7.htm Interior layers in a reaction–diffusion equation with a discontinuous diffusion coefficient] !<br />
* Comput. Methods Appl. Mech. Engrg., 199:1722–1732, 2010, [http://dx.doi.org/10.1016/j.cma.2010.01.018 Analytical and numerical study of photocurrent transients in organic polymer solar cells] ([http://sole.sf.net Octave package] used to perform the computations) !<br />
* Proc. European Performance Engineering Workshop (EPEW), Bertinoro, Italy, sep 2010, [http://dx.doi.org/10.1007/978-3-642-15784-4_4 Performance-Aware Reconfiguration of Software Systems] ([http://www.moreno.marzolla.name/publications/papers/UBLCS-2010-11.m Octave script] used to perform the computations and produce the plots) !<br />
* Proc. Analythical Stochastic Modelling Techniques and Applications (ASMTA'10), Cardiff, UK, jun 2010, [http://dx.doi.org/10.1007/978-3-642-13568-2_8 The qnetworks Toolbox: A Software Package for Queueing Networks Analysis] !<br />
* 5th Int. Conf. on Comparing Design in Nature with Science and Engineering (2010). [http://arxiv.org/abs/1108.4448 Magneto-mechanical actuation model for fin-based locomotion][https://files.ifi.uzh.ch/ailab/people/carbajal/DeNa10/Manuscript_DeNa10.html HTML] !<br />
<br />
* Algebraic and Geometric Topology [http://dx.doi.org/10.2140/agt.2010.10.2343 Symmetric homology of algebras]<br />
* <font color="red">ICFC 2010 ICNC 2010 - Proceedings of the International Conference on Fuzzy Computation and International Conference on Neural Computation [ Development of a fuzzy calculator for continuous functions of non-interactive fuzzy variables]</font><br />
* Journal of Computational and Applied Mathematics [http://dx.doi.org/10.1016/j.cam.2010.06.003 Modeling of an insurance system and its large deviations analysis]<br />
* 2010 Annual International Conference of the IEEE Engineering in Medicine and Biology Society, EMBC'10 [http://dx.doi.org/10.1109/IEMBS.2010.5627397 Real-time Experiment Interface for biological control applications]<br />
* INFORMS Journal on Computing [http://dx.doi.org/10.1287/ijoc.1090.0343 A heuristic for nonlinear global optimization]<br />
* Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) [http://dx.doi.org/10.1007/978-3-642-13678-8_1 Probabilistic semantics and program analysis]<br />
* Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) [http://dx.doi.org/10.1007/978-3-642-15784-4_4 Performance aware reconfiguration of software systems]<br />
* Biotechnology, Agronomy and Society and Environment [http://www.cabdirect.org/abstracts/20103309606.html Comparison of two drying models applied to corn drying in fluidized bed [Comparaison d'un modèle empirique et d'un modèle physique de séchage de grains de maïs en lit fluidisé]]<br />
* Spectroscopy Letters [http://dx.doi.org/10.1080/00387010.2010.510702 Quantitative infrared spectroscopy in the undergraduate laboratory via multivariate mixture analysis of a simulated analgesic]<br />
* European Radiology [http://dx.doi.org/10.1007/s00330-010-1853-0 Longitudinal study of a mouse model of chronic pulmonary inflammation using breath hold gated micro-CT]<br />
* Chemical Physics [http://dx.doi.org/10.1016/j.chemphys.2010.05.009 A classical Master equation approach to modeling an artificial protein motor]<br />
* ACM Transactions on Mathematical Software [http://dx.doi.org/10.1145/1824801.1824804 Increasing the reliability of adaptive quadrature using explicit interpolants]<br />
* Computer Applications in Engineering Education [http://dx.doi.org/10.1002/cae.20231 Teaching differential equations in different environments: A first approach]<br />
* Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) [http://dx.doi.org/10.1007/978-3-642-13568-2_8 The qnetworks toolbox: A software package for queueing networks analysis]<br />
* Proceedings of the Royal Society A: Mathematical, Physical and Engineering Sciences [http://dx.doi.org/10.1098/rspa.2009.0665 Stochastically forced water waves in a circular basin]<br />
* Performance Evaluation Review [http://dx.doi.org/10.1145/1811099.1811069 RSIO: Automatic user interaction detection and scheduling]<br />
* Journal of High Energy Physics [http://dx.doi.org/10.1007/JHEP03(2010)117 Quasinormal modes of massive charged avor branes]<br />
* Langmuir [http://dx.doi.org/10.1021/la100798c Viscoelastic modeling with interfacial slip of a protein monolayer electrode-adsorbed on an acoustic wave biosensor]<br />
* Journal of Biological Chemistry [http://dx.doi.org/10.1074/jbc.M109.080911 Biochemical basis of the interaction between cystic fibrosis transmembrane conductance regulator and immunoglobulin-like repeats of filamin]<br />
* Computers and Chemical Engineering [http://dx.doi.org/10.1016/j.compchemeng.2009.10.007 Data smoothing and numerical differentiation by a regularization method]<br />
* Physical Review A - Atomic, Molecular, and Optical Physics [http://dx.doi.org/10.1103/PhysRevA.81.033614 Resonant trapping in the transport of a matter-wave soliton through a quantum well]<br />
* High Pressure Research [http://dx.doi.org/10.1080/08957951003630449 Raman spectroscopy of triolein under high pressures]<br />
* Journal of Physics A: Mathematical and Theoretical [http://dx.doi.org/10.1088/1751-8113/43/10/105205 Relaxation dynamics of perturbed regular hyperbranched fractals]<br />
* Bulletin of the Polish Academy of Sciences: Technical Sciences [http://arxiv.org/abs/1006.1549 Extending scientific computing system with structural quantum programming capabilities]<br />
* Communications in Computational Physics [http://dx.doi.org/10.4208/cicp.2009.08.201 Simulation of spherulite growth using a comprehensive approach to modeling the first-order isotropic/smectic-a mesophase transition]<br />
* Computational Statistics and Data Analysis [http://dx.doi.org/10.1016/j.csda.2009.09.001 Grapham: Graphical models with adaptive random walk Metropolis algorithms]<br />
* Autonomous Robots [http://dx.doi.org/10.1007/s10514-009-9160-9 HERB: A home exploring robotic butler]<br />
* International Journal of Electrical Engineering Education [http://www.ingentaconnect.com/content/manup/ijeee/2010/00000047/00000001/art00005 Experience with PSAT (Power System Analysis Toolbox) as free and open-source software for power system education and research]<br />
<br />
== 2009 ==<br />
* Proceedings of APSIS, Charleston, SC (US), June 2009, [http://dx.doi.org/10.1109/APS.2009.5172087 Accuracy limits of in-room localisation using RSSI] !<br />
* J. Comput. Phys., 228:770–1789, 2009, [http://dx.doi.org/10.1016/j.jcp.2008.11.010 Quantum corrected drift–diffusion models: Solution fixed point map and finite element approximation] !<br />
* Proceedings of BAIL, Limerick, 2008, volume 69 of LNCSE, 2009, [http://dx.doi.org/10.1007/978-3-642-00605-0_8 A patched mesh method for singularly perturbed reaction-diffusion equations] !<br />
* Proceedings of BAIL, Limerick, 2008, volume 69 of LNCSE, 2009, [http://dx.doi.org/10.1007/978-3-642-00605-0_9 Singularly perturbed reaction-diffusion problem with a boundary turning point] !<br />
* Proceedings of the 2008 ECMI conference, London, volume 15 of Mathematics in Industry, 2009, [http://dx.doi.org/10.1007/978-3-642-12110-4_33 Patches of finite elements for singularly-perturbed diffusion reaction equations with discontinuous coefficients] !<br />
* Journal of Physical Chemistry B [http://dx.doi.org/10.1021/jp9076036 Free-energy landscape of RNA hairpins constructed via dihedral angle principal component analysis]<br />
* IEEE Transactions on Semiconductor Manufacturing [http://dx.doi.org/10.1109/TSM.2009.2031791 A novel approach to analyze and model feature size effects in CMP]<br />
* Performance Evaluation [http://dx.doi.org/10.1016/j.peva.2009.05.001 System-theoretical algorithmic solution to waiting times in semi-Markov queues]<br />
* Computer Languages, Systems and Structures [http://dx.doi.org/10.1016/j.cl.2008.02.001 jLab: Integrating a scripting interpreter with Java technology for flexible and efficient scientific computation]<br />
* Journal of Geophysical Research B: Solid Earth [http://dx.doi.org/10.1029/2008JB006152 NW Australian intraplate seismicity and stress regime]<br />
* Journal of Chemometrics [http://dx.doi.org/10.1002/cem.1248 A comparison of nine PLS1 algorithms]<br />
* Measurement Science and Technology [http://dx.doi.org/10.1088/0957-0233/20/5/055801 Determining membrane permeability of giant phospholipid vesicles from a series of videomicroscopy images]<br />
* Mathematical Methods of Statistics [http://dx.doi.org/10.3103/S1066530709030028 A Bayesian approach to the estimation of maps between Riemannian manifolds. II: Examples]<br />
* Physical Review Special Topics - Accelerators and Beams [http://dx.doi.org/10.1103/PhysRevSTAB.12.081001 Tracking studies of the Compact Linear Collider collimation system]<br />
* Biological Cybernetics [http://dx.doi.org/10.1007/s00422-009-0325-6 Predictive feedback in human simulated pendulum balancing]<br />
* Bulletin of the Russian Academy of Sciences: Physics [http://dx.doi.org/10.3103/S1062873809050128 Regions of excessive flux of PeV cosmic rays]<br />
* Computing in Science and Engineering [http://dx.doi.org/10.1109/MCSE.2009.126 Scientific scripting for the java platform with jlab]<br />
* International Journal of Control [http://dx.doi.org/10.1080/00207170802474702 Constrained intermittent model predictive control]<br />
* Journal of Chromatography A [http://dx.doi.org/10.1016/j.chroma.2009.01.042 Suppressing the charged coupled device noise in univariate thin-layer videoscans: A comparison of several algorithms]<br />
* ACM Transactions on Mathematical Software [http://dx.doi.org/10.1145/1486525.1486531 Algorithm 892: DISPMODULE, a Fortran 95 module for pretty-printing matrices]<br />
* Stochastic Processes and their Applications [http://dx.doi.org/10.1016/j.spa.2008.02.009 Importance sampling for a Markov modulated queuing network]<br />
* IEEE Transactions on Wireless Communications [http://dx.doi.org/10.1109/TWC.2009.060475 Measurement-based frame error model for simulating outdoor Wi-Fi networks]<br />
<br />
== 2008 ==<br />
* Proceedings of the 79th GAMM meeting, volume 8 of Proc. Appl. Math. Mech. PAMM, pages 10061 – 10064, 2008, [http://dx.doi.org/10.1002/pamm.200810061 Dynamical iteration schemes for multiscale simulation in nanoelectronics] !<br />
* Proceedings of the 79th GAMM meeting, volume 8 of Proc. Appl. Math. Mech. (PAMM), pages 10065–10068, 2008, [http://dx.doi.org/10.1002/pamm.200810065 Dynamical iteration schemes for coupled simulation in nanoelectronics] !<br />
* Journal of Biological Chemistry [http://dx.doi.org/10.1074/jbc.M806353200 Monitoring light-induced structural changes of channelrhodopsin-2 by UV-visible and Fourier transform infrared spectroscopy] <br />
* Journal of Applied Physics [http://dx.doi.org/10.1063/1.3013904 Electro-optical modeling of bulk heterojunction solar cells] !<br />
* Clinical and Experimental Ophthalmology [http://dx.doi.org/10.1111/j.1442-9071.2008.01819.x Fourier analysis of digital retinal images in estimation of cataract severity]<br />
* Numerische Mathematik [http://dx.doi.org/10.1007/s00211-008-0176-4 Approximating optimization problems over convex functions]<br />
* Medical Engineering and Physics [http://dx.doi.org/10.1016/j.medengphy.2008.02.002 Cervical spine biomechanics following implantation of a disc prosthesis]<br />
* IEEE Power and Energy Society 2008 General Meeting: Conversion and Delivery of Electrical Energy in the 21st Century, PES [http://dx.doi.org/10.1109/PES.2008.4596465 Towards a common model for studying critical infrastructure interdependencies]<br />
* 3rd International Symposium on Wireless Pervasive Computing, ISWPC 2008, Proceedings [http://dx.doi.org/10.1109/ISWPC.2008.4556238 A novel low-complexity algorithm for linear MMSE MIMO receivers]<br />
* Studies in Computational Intelligence [http://dx.doi.org/10.1007/978-3-540-78534-7_10 Visualization and interactive exploration of large, multidimensional data sets]<br />
* Studies in Computational Intelligence [http://dx.doi.org/10.1007/978-3-540-76286-7_3 A versatile surrogate-assisted memetic algorithm for optimization of computationally expensive functions and its engineering applications]<br />
* IEEE Transactions on Education [http://dx.doi.org/10.1109/TE.2007.893354 An open source power system virtual laboratory: The PSAT case and experience]<br />
* Applied Mechanics Reviews [http://dx.doi.org/10.1115/1.2939371 A review of H∞ robust control of piezoelectric smart structures]<br />
* IEEE Transactions on Biomedical Engineering [http://dx.doi.org/10.1109/TBME.2007.903713 Image analysis for microelectronic retinal prosthesis]<br />
* Composite Structures [http://dx.doi.org/10.1016/j.compstruct.2007.01.005 Finite element modeling and optimization of load transfer in multi-fastener joints using structural elements]<br />
* SIMULATION: Transactions of The Society for Modeling and Simulation International [http://dx.doi.org/10.1177/0037549708093715 CostGlue: simulation data exchange in telecommunications]<br />
<br />
==2007==<br />
* Water Science and Technology [http://dx.doi.org/10.2166/wst.2007.706 Kinetics of autothermal thermophilic aerobic digestion - Application and extension of Activated Sludge Model No 1 at thermophilic temperatures]<br />
* Western North American Naturalist [http://dx.doi.org/10.3398/1527-0904(2007)67%5B520:MSIRTS%5D2.0.CO;2 Moistened seeds increase rodent trap success]<br />
* EUROMICRO 2007 - Proceedings of the 33rd EUROMICRO Conference on Software Engineering and Advanced Applications, SEAA 2007 [http://dx.doi.org/10.1109/EUROMICRO.2007.32 GridIJ - A dynamic grid service architecture for scientific image processing]<br />
* IEEE International Conference on Intelligent Robots and Systems [http://dx.doi.org/10.1109/IROS.2007.4399546 Kernel-based visual servoing]<br />
* 2007 IEEE Power Engineering Society General Meeting, PES [http://dx.doi.org/10.1109/PES.2007.385952 Application of the PSAT, an open source software, for educational and research purposes]<br />
* Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) [http://www.springerlink.com/content/t2172g408365201x/ Abstract interpretation for worst and average case analysis]<br />
* Proceedings - IEEE International Conference on Cluster Computing, ICCC [http://dx.doi.org/10.1109/CLUSTR.2007.4629238 Performance analysis of a user-level memory server]<br />
* Proceedings of the Institution of Mechanical Engineers. Part I: Journal of Systems and Control Engineering [http://dx.doi.org/10.1243/09596518JSCE419 An adaptive learning algorithm for controlling a two-degree-of-freedom serial ball-and-socket actuator]<br />
* Lecture Notes in Control and Information Sciences [http://dx.doi.org/10.1007/978-3-540-72699-9_18 A nonlinear model predictive control framework as free software: Outlook and progress report]<br />
* Collection of Technical Papers - 2007 AIAA InfoTech at Aerospace Conference [http://www.aric.or.kr/treatise/journal/content.asp?idx=102058 Airfoil shape optimization by minimization of an expensive and discontinuous black-box function]<br />
* Periodica Polytechnica: Chemical Engineering [http://dx.doi.org/10.3311/pp.ch.2007-1.04 Connection between oxygen uptake rate and carbon dioxide evolution rate in aerobic thermophilic sludge digestion]<br />
* Journal of Fluid Mechanics [http://dx.doi.org/10.1017/S0022112007007318 Instability of the buoyancy layer on an evenly heated vertical wall]<br />
* Electronic Notes in Theoretical Computer Science [http://dx.doi.org/10.1016/j.entcs.2007.07.005 On Probabilistic Techniques for Data Flow Analysis]<br />
* Collection of Technical Papers - AIAA/ASME/ASCE/AHS/ASC Structures, Structural Dynamics and Materials Conference [http://hdl.handle.net/2027.42/76240 T650/AFR-PE-4/FM680-1 mode I critical energy release rate at high temperatures: Experiments and numerical models]<br />
* Phytochemistry [http://dx.doi.org/10.1016/j.phytochem.2007.04.033 Design of substrate label for steady state flux measurements in plant systems using the metabolic network of Brassica napus embryos]<br />
* IET Software [http://dx.doi.org/10.1049/iet-sen:20060048 Scientific programming with Java classes supported with a scripting interpreter]<br />
* Genetics [http://dx.doi.org/10.1534/genetics.106.067215 Adaptation of a quantitative trait to a moving optimum]<br />
* Water Environment Research [http://dx.doi.org/10.2175/106143006X136810 Application of activated sludge model no. 3 for the modeling of organic matter biodegradation at thermophilic temperatures]<br />
* Computational Statistics [http://dx.doi.org/10.1007/s00180-007-0023-6 Excel :: COM :: R]<br />
* IEEE Transactions on Power Delivery [http://dx.doi.org/10.1109/TPWRD.2007.893389 Effects of sampling rate and ADC width on the accuracy of amplitude and phase measurements in power-quality monitoring]<br />
* Bulletin of the Russian Academy of Sciences: Physics [http://dx.doi.org/10.3103/S1062873807040132 Search for sources of cosmic rays in the region of the knee: Part II]<br />
<br />
==2006==<br />
* Chemometrics and Intelligent Laboratory Systems [http://dx.doi.org/10.1016/j.chemolab.2006.04.025 How octave can replace Matlab in chemometrics]<br />
* 41st International Universities Power Engineering Conference, UPEC 2006, Conference Procedings [http://dx.doi.org/10.1109/UPEC.2006.367635 System requirements of real time continuous data acquisition for power quality monitoring]<br />
* e-Science 2006 - Second IEEE International Conference on e-Science and Grid Computing [http://dx.doi.org/10.1109/E-SCIENCE.2006.261046 Grid services toolkit for process data processing]<br />
* Chemometrics and Intelligent Laboratory Systems [http://dx.doi.org/10.1016/j.chemolab.2006.04.014 Superresolution of hyperspectral images]<br />
* Computer Applications in Engineering Education [http://dx.doi.org/10.1002/cae.20080 A Web-based tool for control engineering teaching]<br />
* ANZIAM Journal [https://www.austms.org.au/Publ/ANZIAM/V48P2/pdf/2350.pdf Drainage after total knee replacement]<br />
* Protein Engineering, Design and Selection [http://dx.doi.org/10.1093/protein/gzl023 Consensus guided mutagenesis of Renilla luciferase yields enhanced stability and light output]<br />
* Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) [http://atc.ugr.es/I+D+i/revistas/2006/LNCS_2006_3992_0518.pdf SCE toolboxes for the development of high-level parallel applications]<br />
* Space Science Reviews [http://dx.doi.org/10.1007/s11214-006-9106-x End-to-end modeling of the solar terrestrial system]<br />
* <font color="red">Publications of the Astronomical Society of Japan [ Milliarcsecond-scale spectral properties and jet motions in M 87]</font><br />
* Nucleic Acids Research [http://dx.doi.org/10.1093/nar/gkl109 Experimental and computational investigations of Ser10 and Lys13 in the binding and cleavage of DNA substrates by Escherichia coli DNA topoisomerase I]<br />
* Physiological Measurement [http://dx.doi.org/10.1088/0967-3334/27/5/S03 Uses and abuses of EIDORS: An extensible software base for EIT]<br />
* International Journal for Numerical and Analytical Methods in Geomechanics [http://dx.doi.org/10.1002/nag.427 Review of validation of the discontinuous deformation analysis (DDA) method]<br />
* Physical Review A - Atomic, Molecular, and Optical Physics [http://dx.doi.org/10.1103/PhysRevA.73.032310 Maximizing nearest-neighbor entanglement in finitely correlated qubit chains]<br />
* Transportation Science [http://dx.doi.org/10.1287/trsc.1050.0119 Solving noisy, large-scale fixed-point problems and systems of nonlinear equations]<br />
* Applied Mathematics and Computation [http://dx.doi.org/10.1016/j.amc.2006.05.129 HYPER2D: a numerical code for hyperinterpolation at Xu points on rectangles] !<br />
<br />
==2005==<br />
* Collection of Technical Papers - AIAA/ASME/ASCE/AHS/ASC Structures, Structural Dynamics and Materials Conference [http://www.aric.or.kr/treatise/journal/content.asp?idx=67141 Comprehensive rotorcraft analysis: Past, present, and future]<br />
* Journal of Geophysical Research A: Space Physics [http://dx.doi.org/10.1029/2004JA010956 Analysis and visualization of space science model output and data with CISM-DX]<br />
* Applied Catalysis A: General [http://dx.doi.org/10.1016/j.apcata.2005.05.004 Simplified kinetic models of methanol oxidation on silver]<br />
* Automatica [http://dx.doi.org/10.1016/j.automatica.2005.03.013 Data compression for estimation of the physical parameters of stable and unstable linear systems]<br />
* IEEE Transactions on Power Systems [http://dx.doi.org/10.1109/TPWRS.2005.851911 An open source power system analysis toolbox]<br />
* BMC Bioinformatics [http://dx.doi.org/10.1186/1471-2105-6-118 Computing expectation values for RNA motifs using discrete convolutions]<br />
* IEEE Transactions on Signal Processing [http://dx.doi.org/10.1109/TSP.2004.842178 Design of discrete coefficient FIR filters by a fast entropy-directed deterministic annealing algorithm]<br />
<br />
==2004==<br />
* <font color="red">Proceedings of the International Conference on Automation Technology for Off-road Equipment, ATOE 2004 [ RTK-GPS based autonomous crawler wagon control]</font><br />
* Lecture Notes in Artificial Intelligence (Subseries of Lecture Notes in Computer Science) [http://www.springerlink.com/content/6tatc7xkcwrlhcql/ Data analysis of microarrays using SciCraft]<br />
* Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) [http://users.minet.uni-jena.de/~centler/scouting.pdf Self-adaptive scouting-autonomous experimentation for systems biology]<br />
* Journal of Engineering Mechanics [http://dx.doi.org/10.1061/(ASCE)0733-9399(2004)130:3(249) Time integration in discontinuous deformation analysis]<br />
<br />
==2003==<br />
* Physical Review Special Topics - Accelerators and Beams [http://dx.doi.org/10.1103/PhysRevSTAB.6.102801 Calibration of the Fermilab Booster ionization profile monitor]<br />
* SAR and QSAR in Environmental Research [http://dx.doi.org/10.1080/10629360310001623944 Zherlock: An open source data analysis software]<br />
==2002==<br />
* Journal of Magnetic Resonance [http://dx.doi.org/10.1006/jmre.2001.2454 Specification and visualization of anisotropic interaction tensors in polypeptides and numerical simulations in biological solid-state NMR]<br />
<br />
= See Also =<br />
* [https://www.gnu.org/software/octave/doc/interpreter/Citing-Octave-in-Publications.html How to cite GNU Octave]<br />
<br />
[[Category:Academia]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=OctConf_2017&diff=9788OctConf 20172017-02-02T13:04:37Z<p>Carandraug: /* Participants */</p>
<hr />
<div>OctConf 2017 will take place at CERN, Geneva, Switzerland for three days from March 20 through March 22. <br />
To register officially, please use the CERN conference manager [https://indico.cern.ch/event/609833/ Indico].<br />
In addition, *please* add your name to the Participants section of this page so we can plan appropriately.<br />
<br />
== Location ==<br />
<br />
=== Geneva, Switzerland ===<br />
=== Venue ===<br />
The upcoming Octconf 2017 will take place at CERN (European Center for Nuclear Research). See https://en.wikipedia.org/wiki/CERN.<br />
<br />
=== Travelling ===<br />
<br />
== Dates ==<br />
<br />
The conference will run for three days from Monday, March 20th through Wednesday, March 22nd.<br />
<br />
== Suggestions for Sessions ==<br />
<br />
Approximately half of each day will be devoted to presentations. The remainder will be used for informal discussions, code sprints, etc.<br />
<br />
Please propose session topics in the schedule below. The actual time slot you pick is not important--we can re-arrange the schedule later--but we need to know what topics are of interest.<br />
<br />
In addition, if you have a poster, rather than a full presentation, there is a separate sign-up sheet below.<br />
<br />
=== Schedule ===<br />
During the daytime: CERN offers many areas where people can socialize and/or discuss, informally. For instance, the CERN main restaurant is open until 23:00 (11:00 PM).<br />
<br />
<table class="tg" border="1" width="800" style="text-align: center"><br />
<tr><br />
<th width="110">Time</th><br />
<th width="220">Monday<br/>(General GNU Octave day)</th><br />
<th width="220">Tuesday<br/>(GNU Octave Packages day)</th><br />
<th width="250">Wednesday<br/>(Libre and Open Source Software day)</th><br />
</tr><br />
<tr><br />
<td>9:00-9:30</td><br />
<td>Open Slot</td><br />
<td>Open Slot</td><br />
<td>Open Slot</td><br />
</tr><br />
<tr><br />
<td>9:30-10:00</td><br />
<td>Open Slot</td><br />
<td>Open Slot</td><br />
<td>Open Slot</td><br />
</tr><br />
<tr><br />
<td>10:00-10:15</td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
</tr><br />
<tr><br />
<td>10:15-10:50</td><br />
<td>Open Slot</td><br />
<td>Open Slot</td><br />
<td rowspan="4">Unconference</td><br />
</tr><br />
<tr><br />
<td>10:50-11:25</td><br />
<td>Open Slot</td><br />
<td>Open Slot</td><br />
</tr><br />
<tr><br />
<td>11:25-12:00</td><br />
<td>Open Slot</td><br />
<td>Open Slot</td><br />
</tr><br />
<tr><br />
<td>12:00-12:30</td><br />
<td><strong>Discussion</strong></td><br />
<td><strong>Discussion</strong></td><br />
</tr><br />
<tr><br />
<td><br/>12:30-14:00<br/><br/></td><br />
<td><strong>Lunch</strong></td><br />
<td><strong>Lunch</strong></td><br />
<td><strong>Lunch</strong></td><br />
</tr><br />
<tr><br />
<td>14:00-14:35</td><br />
<td rowspan="3">Open Slot (Pleanry session: CERN main auditorium)</td><br />
<td rowspan="3">Open Slot (Pleanry session: CERN main auditorium)</td><br />
<td rowspan="3">Visit to CERN sites</td><br />
</tr><br />
<tr><br />
<td>14:35-15:10</td><br />
</tr><br />
<tr><br />
<td>15:10-15:45</td><br />
</tr><br />
<tr><br />
<td>15:45-16:00</td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
<td><strong>Coffee</strong></td><br />
</tr><br />
<tr><br />
<td><br/><br/>16:00-18:00<br/><br/><br/></td><br />
<td><strong>Code Sprint</strong></td><br />
<td><strong>Code Sprint</strong></td><br />
<td><strong>Organization of OctConf2018</strong></td><br />
</tr><br />
<tr><br />
<td>18:00-19:00</td><br />
<td rowspan="2"><br/>Fondue night (alternative 1)</td><br />
<td rowspan="2"><br/>Fondue night (alternative 2)</td><br />
<td rowspan="2"><br/>Closing and Farewell</td><br />
</tr><br />
<tr><br />
<td>19:00-20:00</td><br />
</tr><br />
</table><br />
<br />
=== Poster Session ===<br />
<br />
If you have a poster demonstrating how you use Octave to address an application in your field please add your name and poster topic to the list below. We will schedule an appropriately sized space based on the number of posters.<br />
<br />
Confirmed Posters:<br />
<br />
<table class="tg" border="0" width="600" style="text-align: left"><br />
<tr><br />
<th width="400">Title</th><br />
<th width="200">Author</th><br />
</tr><br />
<tr><br />
<td>Fast approximation of complicated simulators</td><br />
<td>[[User:KaKiLa |JuanPi Carbajal]]</td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr> <br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
</table><br />
<br />
== Participants ==<br />
<br />
* [[User:KaKiLa|Juan Pablo Carbajal]]<br />
* [[User:Francesco Faccio|Francesco Faccio]]<br />
* [[User:jwe|John W. Eaton]] (need funding for travel)<br />
* [[User:rik|Rik]] (need funding for travel)<br />
* [[User:Doug|Douglas Stewart]]<br />
* [[User:Siko1056|Kai T. Ohlhus]] (waits for permission from employer)<br />
* [[User:Oheim|Oliver Heimlich]] (probably only 2 days, waits for permission from wife)<br />
* [[User:Carandraug|Carnë Draug]] (likely to attend but unsure. Will only be able to confirm the week before)<br />
<br />
== Funding ==<br />
<br />
== Previous OctConf ==<br />
[[OctConf 2015]]<br />
<br />
== Next OctConf ==<br />
[[OctConf 2018]]<br />
<br />
[[Category:OctConf]]<br />
[[Category:2017]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Image_package&diff=9718Image package2016-12-12T12:18:27Z<p>Carandraug: don't name the number of the latest release as that gets out of date quickly. Link to the homepage</p>
<hr />
<div>The {{Forge|image|image package}} is part of the octave-forge project. See its {{Forge|image|homepage}} for the latest release.<br />
<br />
== Development ==<br />
<br />
Follows an incomplete list of stuff missing in the image package to be matlab compatible. Bugs are not listed here, [https://savannah.gnu.org/bugs/?func=search&group=octave search] and [https://savannah.gnu.org/bugs/?func=additem&group=octave report] them on the bug tracker instead.<br />
<br />
=== Roadmap ===<br />
<br />
The following are missing targets for the next minor release of the image package (version 2.6.0). Small bug fixes, build fixes, and regressions may still be released before in a patch release (Version 2.4.X).<br />
<br />
* add ellipse properties to {{codeline|regionprops}} (see bug {{bug|44100}})<br />
* speed up {{codeline|regionprops}} for large images with many small objects (probably work around for loop with {{codeline|labeled == labelid}}<br />
* support passing {{codeline|bwconncomp}} output to {{codeline|regionprops}} (and then fix {{codeline|bwpropfilt}} to use that instead of a labeled image)<br />
* ND support on {{codeline|imfilter}}<br />
* check if {{codeline|normxcorr2}} is Matlab compatible and investigate making use of {{codeline|fftconvn}} since it's likely to receive large input<br />
* investigate implementing the missing deconvolution functions (see patch {{patch|8571}}<br />
* anything else that is done or submitted before the above are done<br />
<br />
=== Missing functions ===<br />
{{Note|this entire section is about the current development version. If a Matlab function is missing from the list and does not appear on the current release of the package, confirm that is also missing in the [https://sourceforge.net/p/octave/image/ development sources] before adding it.}}<br />
<br />
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"><br />
* activecontour<br />
* adapthisteq<br />
* affine2d<br />
* affine3d<br />
* applycform<br />
* axes2pix<br />
* bwconvhull<br />
* bwdistgeodesic<br />
* bwlookup<br />
* bwpack<br />
* bwtraceboundary<br />
* bwulterode<br />
* bwunpack<br />
* convmtx2<br />
* corner<br />
* cornermetric<br />
* cpcorr<br />
* cpselect<br />
* cpstruct2pairs<br />
* dct2<br />
* dctmtx<br />
* deconvblind<br />
* deconvlucy<br />
* deconvreg<br />
* deconvwnr<br />
* decorrstretch<br />
* demosaic<br />
* dicomanon<br />
* dicomdisp<br />
* dicomuid<br />
* dpxread<br />
* dpxinfo<br />
* fan2para<br />
* fanbeam<br />
* fliptform<br />
* freqz2<br />
* fsamp2<br />
* ftrans2<br />
* fwind1<br />
* fwind2<br />
* gabor<br />
* getimage<br />
* getimagemodel<br />
* getline<br />
* getpts<br />
* getrect<br />
* gradientweight<br />
* graycoprops<br />
* grayconnected<br />
* graydiffweight<br />
* hdrread<br />
* hdrwrite<br />
* hough -- (see hough_circle)<br />
* houghlines -- (see hough_line)<br />
* houghpeaks<br />
* iccfind<br />
* iccread<br />
* iccroot<br />
* iccwrite<br />
* idct2<br />
* ifanbeam<br />
* im2java2d<br />
* ImageAdapter<br />
* imageinfo<br />
* imapplymatrix<br />
* imapprox<br />
* imboxfilt<br />
* imboxfilt3<br />
* imcolormaptool<br />
* imcontour<br />
* imcontrast<br />
* imdisplayrange<br />
* imdistline<br />
* imellipse<br />
* imextendedmax<br />
* imextendedmin<br />
* imfill -- (see bwfill)<br />
* imfindcircles<br />
* imfreehand<br />
* imfuse<br />
* imgaborfilt<br />
* imgaussfilt<br />
* imgaussfilt3<br />
* imgca<br />
* imgcf<br />
* imguidedfilter<br />
* imhandles<br />
* imhistmatch<br />
* imhmax<br />
* imhmin<br />
* imimposemin<br />
* imline<br />
* immagbox<br />
* immovie<br />
* imoverview<br />
* imoverviewpanel<br />
* impixelinfo<br />
* impixelinfoval<br />
* impixelregionpanel<br />
* impixelregion<br />
* implay<br />
* impoint<br />
* impoly<br />
* improfile<br />
* imrect<br />
* imref2d<br />
* imref3d<br />
* imregconfig<br />
* imregcorr<br />
* imregdemons<br />
* imregister<br />
* imregtform<br />
* imroi<br />
* imscrollpanel<br />
* imsegfmm<br />
* imseggeodesic<br />
* imsharpen<br />
* imshowpair<br />
* imtool<br />
* imwarp<br />
* integralBoxFilter<br />
* integralBoxFilter3<br />
* integralImage<br />
* integralImage3<br />
* interfileinfo<br />
* interfileread<br />
* iptaddcallback<br />
* iptcheckhandle<br />
* iptgetapi<br />
* iptGetPointerBehavior<br />
* iptgetpref<br />
* ipticondir<br />
* iptPointerManager<br />
* iptprefs<br />
* iptremovecallback<br />
* iptSetPointerBehavior<br />
* iptsetpref<br />
* iptwindowalign<br />
* isicc<br />
* isrset<br />
* makecform<br />
* makeConstrainToRectFcn<br />
* makehdr<br />
* makeresampler<br />
* multithresh<br />
* nitfinfo<br />
* nitfread<br />
* openrset<br />
* para2fan<br />
* projective2d<br />
* regionfill<br />
* roifill<br />
* roifilt2<br />
* roipoly<br />
* rsetwrite<br />
* ssim<br />
* tformarray<br />
* tonemap<br />
* truesize<br />
* visboundaries<br />
* viscircles<br />
* warp<br />
* whitepoint<br />
* wiener2<br />
* xyz2double<br />
* xyz2uint16<br />
</div><br />
<br />
=== Different functions ===<br />
<br />
* with version 2014a, Matlab introduced a new function imtranslate. This function was part of Octave's package since 2002 but Matlab version is completely different. It needs to be rewritten for Matlab compatibility.<br />
<br />
=== Missing options ===<br />
<br />
* @strel<br />
** missing SE decomposition for the diamond shape<br />
** approximation argument for the ball and disk shapes are not implemented<br />
** the translate method is not yet implemented<br />
* blockproc<br />
** The name-value input arguments have not yet been implemented.<br />
* colfilt<br />
** the option to split the image in smaller blocks before performing the im2col and filtering is ignored. Since that option only allows to use less memory and has no effect on the output is only important for sliding filtering with big blocks size.<br />
* impixel<br />
** interactive selection of points (less than 2 input arguments) is not yet implemented. Ability to create such UIs needs to be implemented in Octave core first.<br />
* imcrop<br />
** messing around with alternative coordinate systems (XData and YData) are not yet implemented.<br />
* imwrap<br />
** no supports for SmoothEdges option<br />
<br />
=== Contributing ===<br />
* It'd help to group the missing functions above, as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.<br />
<br />
=== Open Bugs ===<br />
<br />
* {{bug|38085}}: image package: fails to build with --enable-64 (entropyfilt)<br />
* {{bug|38087}}: image package: graycomatrix incompatibilities with matlab<br />
* {{bug|38345}}: image package: __spatial_filtering__() always returns class double<br />
* {{bug|41674}}: image package: temporary arrays in imresize are doubles<br />
* {{bug|41768}}: imdither() calls imwrite() in the wrong way (Package: image)<br />
* {{bug|43218}}: image package: imshear causes more signal spread than expected and inconsistent vertical offset<br />
* {{bug|44396}}: image package: bwmorph shrink does not preserve Euler numbe<br />
* {{bug|44799}}: image package: imrotate chrashes when using 'spline' as interpolation method<br />
* {{bug|44831}}: image package: imrotate - different dimensions of output matrix<br />
* {{bug|45088}}: image package: rangefilt requires domain and image to have equa number of dimensions<br />
* {{bug|45333}}: image package: grayhresh fails if input doesn't have different values<br />
* {{bug|46745}}: image package: imresize default method (bicubic) Matlab incompatible for the border pixels<br />
* {{bug|47115}}: label2rgb from image-package doesn't work for labels with value above the uint16 limit<br />
* {{bug|48529}}: image package: compilation warnings under Mac OSX<br />
* {{bug|48794}}: image package: imreconstruct should clip marker > mask<br />
* {{bug|49613}}: image package - regionprops.m majoraxislength broken<br />
<br />
[[Category:Octave-Forge]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Cookbook&diff=9584Cookbook2016-09-22T22:55:30Z<p>Carandraug: /* Find if a package is installed */ use pkg list instead of pkg describe, because describe has an odd behaviour</p>
<hr />
<div>An Octave cookbook. Each entry should go in a separate section and have the following subsection: problem, solution, discussion and maybe a see also.<br />
<br />
== Programs, Libraries, and Packages ==<br />
<br />
Recipes for developers of Octave programs and libraries. The type of stuff<br />
an Octave programmer should be aware when writing code for others.<br />
<br />
=== Find Octave configuration ===<br />
<br />
Octave can be built with many configurations so programs may end up running<br />
in a machine without features they need. Developers should never expect an<br />
Octave installation to have all features. And programs should identify if<br />
the required features are available.<br />
<br />
This is a list of possible tests to check for features:<br />
<br />
## support for 64 bit indexing<br />
sizemax () > intmax ("int32")<br />
<br />
## built with support for java<br />
usejava ("jvm")<br />
<br />
## Image IO with support for tif files<br />
any (cellfun (@(x) ismember ("tif", x), {imformats.ext}))<br />
## Image IO with support for png files<br />
any (cellfun (@(x) ismember ("png", x), {imformats.ext}))<br />
<br />
=== Find if a package is installed ===<br />
<br />
==== Problem ====<br />
<br />
You have a program that uses different functions or behaves different<br />
depending on the availability of specific packages.<br />
<br />
==== Solution ====<br />
<br />
Use {{codeline|pkg ("list", pkg-name)}} like so:<br />
<br />
if (! isempty (pkg ("list", "foo")))<br />
## use functions from package foo, the prefered way<br />
elseif (! isempty (pkg ("list", "bar")))<br />
## use functions from package bar, not so optimal<br />
else<br />
## default case<br />
endif<br />
<br />
==== Discussion ====<br />
<br />
It's not recommended to use this if the only purpose is to then fail<br />
in the absence of the package. In such case, simply try to load the package<br />
and Octave will already give a error message that is informative enough.<br />
<br />
There is only purpose to check this, if there is something different to<br />
do if a package is missing. The same is true for catching an error from<br />
{{codeline|pkg load}}. If you only catch an error to then throw it again<br />
then you might as well not catch it in the first place.<br />
<br />
## This contraption doesn't add anything. If 'pkg load' fails, it<br />
## will already give an error message to the user.<br />
try<br />
pkg load foo;<br />
catch<br />
error ("failed to load foo: %s", lasterr ());<br />
end_try_catch<br />
<br />
## Again, doesn't add anything. The failure of 'pkg load' is enough<br />
if (isempty (pkg ("list", "foo")))<br />
error ("program: package foo is not installed");<br />
endif<br />
<br />
Beware that an installed package is not always a guarantee that a function<br />
will be available. Some packages may disable functions at build time, or<br />
specific functions may have specific runtime requirements.<br />
<br />
== Structures ==<br />
=== Retrieve a field value from all entries in a struct array ===<br />
==== Problem ====<br />
You have a struct array with multiple fields, and you want to access the value from a specific field from all elements. For example, you want to return the age from all patients in the following case:<br />
<br />
samples = struct ("patient", {"Bob", "Kevin", "Bob" , "Andrew"},<br />
"age", { 45 , 52 , 45 , 23 },<br />
"protein", {"H2B", "CDK2" , "CDK2", "Tip60" },<br />
"tube" , { 3 , 5 , 2 , 18 }<br />
);<br />
<br />
==== Solution ====<br />
Indexing the struct returns a comma separated list so use them to create a matrix.<br />
<br />
[samples(:).age]<br />
<br />
This however does not keep the original structure of the data, instead returning all values in a single column. To fix this, use {{Codeline|reshape()}}.<br />
<br />
reshape ([samples(:).age], size (samples))<br />
<br />
==== Discussion ====<br />
Returning all values in a comma separated lists allows you to make anything out of them. If numbers are expected, create a matrix by enclosing them in square brackets. But if strings are to be expected, a cell array can also be easily generated with curly brackets<br />
<br />
{samples(:).patient}<br />
<br />
You are also not limited to return all elements, you may use logical indexing from other fields to get values from the others:<br />
<br />
[samples([samples(:).age] > 34).tube] ## return tube numbers from all samples from patients older than 34<br />
[samples(strcmp({samples(:).protein}, "CDK2")).tube] ## return all tube numbers for protein CDK2<br />
<br />
== Array manipulation ==<br />
<br />
=== Select a slice from an n-D array ===<br />
<br />
==== Problem ====<br />
<br />
For an array {{Codeline|A}} with arbitrary number of dimensions, select, for example, the first column. This would be {{Codeline|A(:, 1)}} if {{Codeline|A}} was 2-D, {{Codeline|A(:, 1, :)}} if {{Codeline|A}} was 3-D, and so on.<br />
<br />
==== Solution ====<br />
<br />
One possibility is to use {{Codeline|subsref}} with the input {{Codeline|idx}} created dynamically with {{Codeline|repelems}} to have the right number of dimensions. This can be written as a function:<br />
<br />
<br />
{{Code||<syntaxhighlight lang="octave" style="font-size:13px"><br />
function [B]= array_slice (A,k,d)<br />
#return the k-th slice (row, column...) of A, with d specifying the dimension to slice on<br />
idx.type = "()";<br />
idx.subs = repelems ({':'}, [1;ndims(A)]);<br />
idx.subs(d) = k;<br />
B = subsref (A,idx);<br />
endfunction<br />
<br />
#test cases<br />
%!shared A<br />
%! A=rand(2, 3);<br />
%!assert (array_slice (A,1,2), A(:, 1))<br />
%! A=rand(2, 3, 4);<br />
%!assert (array_slice (A,2,1), A(2, :, :))<br />
%! A=rand(2, 3, 4, 5);<br />
%!assert (array_slice (A,1,2), A(:, 1, :, :))<br />
%! A=rand(2, 3, 4, 5, 6);<br />
%!assert (array_slice (A,2,3), A(:, :, 2, :, :))<br />
</syntaxhighlight>}}<br />
<br />
To remove the singleton dimension {{Codeline|d}} from the result {{Codeline|B}}, use <br />
{{Code||<syntaxhighlight lang="octave" style="font-size:13px"><br />
B = reshape(B, [size(B)([1:d-1 d+1:end])]);<br />
</syntaxhighlight>}}<br />
<br />
== Input/output ==<br />
=== Display matched elements from different arrays ===<br />
==== Problem ====<br />
You have two, or more, arrays with paired elements and want to print out a string about them. For example:<br />
<br />
keys = {"human", "mouse", "chicken"};<br />
values = [ 64 72 70 ];<br />
<br />
and you want to display:<br />
<br />
Calculated human genome GC content is 64%<br />
Calculated mouse genome GC content is 72%<br />
Calculated chicken genome GC content is 70%<br />
<br />
==== Solution ====<br />
Make a two rows cell array, with each paired data in a column and supply a cs-list to printf<br />
<br />
values = num2cell (values);<br />
new = {keys{:}; values{:}};<br />
printf ("Calculated %s genome GC content is %i%%\n", new{:})<br />
<br />
or in a single line:<br />
printf ("Calculated %s genome GC content is %i%%\n", {keys{:}; num2cell(values){:}}{:})<br />
<br />
<br />
==== Discussion ====<br />
{{Codeline|printf}} and family do not accept cell arrays as values. However, they keep repeating the template given as long as it has enough arguments to keep going. As such, the trick is on supplying a cs-list of elements which can be done by using a cell array and index it with {{Codeline|<nowiki>{}</nowiki>}}.<br />
<br />
Since values are stored in column-major order, paired values need to be on the same column. A new row of data can then be added later with {{Codeline|new(end+1,:) <nowiki>= {"Andrew", "Bob", "Kevin"}</nowiki>}}. Note that normal brackets are now being used for indexing.<br />
<br />
=== Swap values ===<br />
If you want to exchange the value between two variables without creating a dummy one, you can simply do:<br />
<br />
{{Code|Swap values without dummy variable|<syntaxhighlight lang="octave" style="font-size:13px"><br />
[b,a] = deal (a,b);<br />
</syntaxhighlight>}}<br />
<br />
=== Collect all output arguments of a function ===<br />
If you have a function that returns several values, e.g. <br />
<br />
{{Code||<syntaxhighlight lang="octave" style="font-size:13px"><br />
function [a b c]= myfunc ()<br />
[a,b,c] = deal (1,2,3); <br />
endfunction<br />
</syntaxhighlight>}}<br />
<br />
and you want to collect them all into a single cell (similarly to Python's zip() function) you can do:<br />
<br />
{{Code|Collect multiple output arguments|<syntaxhighlight lang="octave" style="font-size:13px"><br />
outargs = nthargout (1:3, @myfunc)<br />
</syntaxhighlight>}}<br />
<br />
=== Create a text table with fprintf===<br />
(a.k.a. A funny formatting trick with fprintf found by chance)<br />
<br />
Imagine that you want to create a text table with fprintf with 2 columns of 15 characters width and both right justified. How to do this thing?<br />
<br />
That's easy:<br />
<br />
If the variable Text is a cell array of strings (of length <15) with two columns and a certain number of rows, simply type for the kth row of Text<br />
{{Code||<syntaxhighlight lang="octave" style="font-size:13px"><br />
fprintf('%15.15s | %15.15s\n', Text{k,1}, Text{k,2});<br />
</syntaxhighlight>}}<br />
The syntax '%<n>.<m>s' allocates '<n>' places to write chars and display the '<m>' first characters of the string to display.<br />
<br />
Example:<br />
{{Code|Example create a text table with fprintf|<syntaxhighlight lang="octave" style="font-size:13px"><br />
octave:1> Text={'Hello','World'};<br />
octave:2> fprintf('%15.15s | %15.15s\n', Text{1,1}, Text{1,2})<br />
Hello | World<br />
</syntaxhighlight>}}<br />
<br />
===Load comma separated values (*.csv) files===<br />
<br />
{{Code|Load comma separated values files|<syntaxhighlight lang="octave" style="font-size:13px"><br />
A=textread("file.csv", "%d", "delimiter", ",");<br />
B=textread("file.csv", "%s", "delimiter", ",");<br />
inds = isnan(A);<br />
B(!inds) = num2cell(A(!inds))<br />
</syntaxhighlight>}}<br />
<br />
This gets you a 1 column cell array. You can reshape it to the original size by using the <code>reshape</code> function<br />
<br />
The next version of octave (3.6) implements the <code>CollectOutput</code> switch as seen in example 8 here: http://www.mathworks.com/help/techdoc/ref/textscan.html<br />
<br />
Another option is to use the function <code>csvread</code>, however this function can't handle non-numerical data.<br />
<br />
The probably best option is to use the function csv2cell() from the io package. This function can read mixed-type (numerical and text) .csv files, allows to specify other field separators than a comma and other text protection characters (default: " double quote) and can skip headerlines. If you have the io package installed and loaded, type "help csv2cell" at the Octave prompt for more info.<br />
<br />
===Load XML files===<br />
<br />
Reading XML in octave can be achieved using the java library [http://xerces.apache.org/ Xerces] (from apache). <br />
<br />
It seems that the matlab's xmlread is just a thin wrapper around the Xerces library. One should note however, that Java functions have the working directory set to the working directory when octave starts and the working directory is not modified by a cd in octave. Matlab has the same behavior, as Java does not provide a way to change the current working directory (http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4045688). To avoid any issues, it is thus better to use the absolute path to the XML file.<br />
<br />
You need the jar files xercesImpl.jar and xml-apis.jar from e.g. https://www.apache.org/dist/xerces/j/Xerces-J-bin.2.11.0.tar.gz (check for the latest version).<br />
Use javaaddpath to include these files:<br />
<br />
{{Code|Define java path|<syntaxhighlight lang="octave" style="font-size:1.1em"><br />
javaaddpath('/path/to/xerces-2_11_0/xercesImpl.jar');<br />
javaaddpath('/path/to/xerces-2_11_0/xml-apis.jar');<br />
</syntaxhighlight>}}<br />
<br />
A sample script:<br />
<br />
{{Code|Load XML file|<syntaxhighlight lang="octave" style="font-size:1.1em"><br />
filename = 'sample.xml';<br />
<br />
% These 3 lines are equivalent to xDoc = xmlread(filename) in matlab<br />
parser = javaObject('org.apache.xerces.parsers.DOMParser');<br />
parser.parse(filename); <br />
xDoc = parser.getDocument;<br />
<br />
% get first data element <br />
elem = xDoc.getElementsByTagName('data').item(0);<br />
% get text from child<br />
data = elem.getFirstChild.getTextContent<br />
% get attribute named att<br />
att = elem.getAttribute('att')<br />
</syntaxhighlight>}}<br />
<br />
The file <tt>sample.xml</tt>:<br />
<br />
{{Code|Sample XML file|<syntaxhighlight lang="xml" style="font-size:1.1em"><br />
<root><br />
<data att="1">hello</data><br />
</root><br />
</syntaxhighlight>}}<br />
<br />
===Using variable strings in commands===<br />
<br />
For example, to plot data using a string variable as a legend:<br />
<br />
Option 1 (simplest):<br />
{{Code|Using variable strings in commands. op1|<syntaxhighlight lang="octave" style="font-size:13px"><br />
legend = "-1;My data;";<br />
plot(x, y, legend);<br />
</syntaxhighlight>}}<br />
<br />
Option 2 (to insert variables):<br />
{{Code|Using variable strings in commands. op2|<syntaxhighlight lang="octave" style="font-size:13px"><br />
plot(x, y, sprintf("-1;%s;", dataName));<br />
</syntaxhighlight>}}<br />
<br />
Option 3 (not as neat):<br />
{{Code|Using variable strings in commands. op3|<syntaxhighlight lang="octave" style="font-size:13px"><br />
legend = 'my legend';<br />
plot_command = ['plot(x,y,\';',legend,';\')'];<br />
eval(plot_command);<br />
</syntaxhighlight>}}<br />
<br />
These same tricks are useful for reading and writing data files with unique names, etc.<br />
<br />
== Combinatorics ==<br />
=== Combinations with string characters ===<br />
==== Problem ====<br />
You want to get all combinations of different letters but {{codeline|nchoosek}} only accepts numeric input.<br />
<br />
==== Solution ====<br />
Convert your string to numbers and then back to characters.<br />
<br />
{{Code||<syntaxhighlight lang="octave"><br />
char (nchoosek (uint8 (string), n)<br />
</syntaxhighlight>}}<br />
==== Discussion ====<br />
A string in Octave is just a character matrix and can easily be converted to numeric form back and forth. Each character has an associated number (the {{codeline|asci}} function of the {{forge|miscellaneous}} package displays a nicely formatted conversion table).<br />
<br />
=== Permutations with repetition ===<br />
==== Problem ====<br />
You want to generate all possible permutations of a vector with repetition.<br />
<br />
==== Solution ====<br />
Use {{codeline|ndgrid}}<br />
<br />
{{Code||<syntaxhighlight lang="octave"><br />
[x y z] = ndgrid ([1 2 3 4 5]);<br />
[x(:) y(:) z(:)]<br />
</syntaxhighlight>}}<br />
<br />
==== Discussion ====<br />
It is possible to expand the code above and make it work for any length of permutations.<br />
<br />
{{Code||<syntaxhighlight lang="octave"><br />
cart = nthargout ([1:n], @ndgrid, vector);<br />
combs = cell2mat (cellfun (@(c) c(:), cart, "UniformOutput", false));<br />
</syntaxhighlight>}}<br />
<br />
== Mathematics ==<br />
=== Test if a number is a integer ===<br />
There are several methods to do this. The simplest method is probably {{Codeline|<nowiki>fix (x) == x</nowiki>}}<br />
<br />
=== Find if a number is even/odd ===<br />
==== Problem ====<br />
You have a number, or an array or matrix of them, and want to know if any of them is an odd or even number, i.e., their parity.<br />
==== Solution ====<br />
Check the remainder of a division by two. If the remainder is zero, the number is odd.<br />
<br />
mod (value, 2) ## 1 if odd, zero if even<br />
<br />
Since {{Codeline|mod()}} acceps a matrix, the following can be done:<br />
<br />
any (mod (values, 2)) ## true if at least one number in values is even<br />
all (mod (values, 2)) ## true if all numbers in values are odd<br />
<br />
any (!logical (mod (values, 2))) ## true if at least one number in values is even<br />
all (!logical (mod (values, 2))) ## true if all numbers in values are even<br />
<br />
==== Discussion ====<br />
Since we are checking for the remainder of a division, the first choice would be to use {{Codeline|rem()}}. However, in the case of negative numbers {{Codeline|mod()}} will still return a positive number making it easier for comparisons. Another alternative is to use {{Codeline|bitand (X, 1)}} or {{Codeline|bitget (X, 1)}} but those are a bit slower.<br />
<br />
Note that this solution applies to integers only. Non-integers such as 1/2 or 4.201 are neither even nor odd. If the source of the numbers are unknown, such as user input, some sort of checking should be applied for NaN, Inf, or non-integer values.<br />
<br />
==== See also ====<br />
Find if a number is an integer.<br />
<br />
=== Parametrized Functions ===<br />
==== Problem ====<br />
<br />
One sometimes needs to define a family of functions depending on a set of parameters, e.g., <math>f (x, y, z; a, b, c)</math> where <math>x, y, z</math> denote a the variables on which the function operates and <math>a, b, c</math> are the parameters used to chose one specific element of the family of functions.<br />
<br />
For example, let's say we need to compute the time evolution of the elongation of a spring for different values of the spring constant <math>k</math><br />
<br />
==== Solution ====<br />
We could solve the problem with the following code:<br />
<br />
{{Code|Solve spring equation for different values of the spring constant|<syntaxhighlight lang="octave" style="font-size:13px"><br />
t = linspace (0, 10, 100);<br />
function sprime = spring (s, t, k)<br />
x = s(1);<br />
v = s(2);<br />
sprime(1) = v;<br />
sprime(2) = -k * x;<br />
endfunction<br />
k = 1;<br />
x1 = lsode (@(x, t) spring (x, t, k), [1;0], t)(:, 1);<br />
k = 2;<br />
x2 = lsode (@(x, t) spring (x, t, k), [1;0], t)(:, 2);<br />
plot (t, x1, t, x2)<br />
legend ('x1', 'x2')<br />
</syntaxhighlight>}} <br />
<br />
[[File:solparfun.png|400px]]<br />
<br />
==== Discussion ====<br />
<br />
In the above example, the function "sprime" represents a family of functions of the variables <math>x, t</math> parametrized by the parameter <math>k</math>.<br />
<br />
The [http://www.gnu.org/software/octave/doc/interpreter/Anonymous-Functions.html#Anonymous-Functions anonymous function]<br />
{{Code||<syntaxhighlight lang="octave" style="font-size:13px"><br />
@(x, t) sprime (x, t, k)<br />
</syntaxhighlight>}}<br />
<br />
is a function of only <math>x, t</math> where the parameter <math>k</math> is 'frozen' to the value it has at the moment in the current scope.<br />
<br />
=== Distance between points ===<br />
==== Problem ====<br />
Given a set of points in space we want to calculate the distance between all of them. Each point is described by its components <math> (x_i,y_i,\ldots)</math>. Asusme that the points are saved in a matrix '''<tt>P</tt>''' with '''<tt>N</tt>''' rows (one for each point) and '''<tt>D</tt>''' columns, one for each component.<br />
==== Solution ====<br />
One way of proceeding is to use the broadcast properties of operators in GNU Octave. The square distance between the points can be calculated with the code<br />
<!-- {{SyntaxHighlight| --><br />
{{Code|Calculate square distance between points|<syntaxhighlight lang="octave" style="font-size:13px"><br />
[N, dim] = size (P);<br />
Dsq = zeros (N); <br />
for i = 1:dim<br />
Dsq += (P(:,i) - P(:,i)').^2;<br />
endfor<br />
</syntaxhighlight>}}<br />
This matrix is symmetric with zero diagonal.<br />
<br />
Similarly the vectors pointing from one point to the another is<br />
<!-- {{SyntaxHighlight| --><br />
{{Code|Calculate radius vector between points|<syntaxhighlight lang="octave" style="font-size:13px"><br />
R = zeros (N,N,dim); <br />
for i = 1:dim<br />
R(:,:,i) = P(:,i) - P(:,i)';<br />
endfor<br />
</syntaxhighlight>}}<br />
<br />
The relation between <tt>Dsq</tt> and <tt>R</tt> is<br />
<!-- {{SyntaxHighlight| --><br />
{{Code||<syntaxhighlight lang="octave" style="font-size:13px"><br />
Dsq = sumsq (R,3); <br />
</syntaxhighlight>}}<br />
<br />
==== Discussion ====<br />
The calculation can be implemented using functions like <tt>cellfun</tt> and avoid the loop over components of the points. However in most cases we will have more points than components and the improvement, if any, will be minimal.<br />
<br />
Another observation is that the matrix Dsq is symmetric and we could store only the lower or upper triangular part. To use this optimization in a practical way check the help of the functions <tt>vech</tt> and <tt>unvech</tt> (this one is in the Forge package ''general''). Two functions that haven't seen the light yet are <tt>sub2ind_tril</tt> and <tt>ind2sub_tril</tt> (currently private functions in the [[Mechanics_package | Forge package mechanics]]) that are useful to index the elements of a vector constructed with the function <tt>vech</tt>. Each page (the third index) of the multidimensional array <tt>R</tt> is an anti-symmetric matrix and we could also save some memory by keeping only one of the triangular submatrices.<br />
<br />
Check the [[Geometry package]] for many more distance functions (points, lines, polygons, etc.).<br />
<br />
<br />
[[Category:Tutorials]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Cookbook&diff=9583Cookbook2016-09-22T22:38:55Z<p>Carandraug: /* Programs, Libraries, and Packages */ add recipe to check if package is missing</p>
<hr />
<div>An Octave cookbook. Each entry should go in a separate section and have the following subsection: problem, solution, discussion and maybe a see also.<br />
<br />
== Programs, Libraries, and Packages ==<br />
<br />
Recipes for developers of Octave programs and libraries. The type of stuff<br />
an Octave programmer should be aware when writing code for others.<br />
<br />
=== Find Octave configuration ===<br />
<br />
Octave can be built with many configurations so programs may end up running<br />
in a machine without features they need. Developers should never expect an<br />
Octave installation to have all features. And programs should identify if<br />
the required features are available.<br />
<br />
This is a list of possible tests to check for features:<br />
<br />
## support for 64 bit indexing<br />
sizemax () > intmax ("int32")<br />
<br />
## built with support for java<br />
usejava ("jvm")<br />
<br />
## Image IO with support for tif files<br />
any (cellfun (@(x) ismember ("tif", x), {imformats.ext}))<br />
## Image IO with support for png files<br />
any (cellfun (@(x) ismember ("png", x), {imformats.ext}))<br />
<br />
=== Find if a package is installed ===<br />
<br />
==== Problem ====<br />
<br />
You have a program that uses different functions or behaves different<br />
depending on the availability of specific packages.<br />
<br />
==== Solution ====<br />
<br />
Use {{codeline|pkg ("describe", pkg-name)}} like so:<br />
<br />
if (! isempty (pkg ("describe", "foo")))<br />
## use functions from package foo, the prefered way<br />
elseif (! isempty (pkg ("describe", "bar")))<br />
## use functions from package bar, not so optimal<br />
else<br />
## default case<br />
endif<br />
<br />
==== Discussion ====<br />
<br />
It's not recommended to use this if the only purpose is to then fail<br />
in the absence of the package. In such case, simply try to load the package<br />
and Octave will already give a error message that is informative enough.<br />
<br />
There is only purpose to check this, if there is something different to<br />
do if a package is missing. The same is true for catching an error from<br />
{{codeline|pkg load}}. If you only catch an error to then throw it again<br />
then you might as well not catch it in the first place.<br />
<br />
## This contraption doesn't add anything. If 'pkg load' fails, it<br />
## will already give an error message to the user.<br />
try<br />
pkg load foo;<br />
catch<br />
error ("failed to load foo: %s", lasterr ());<br />
end_try_catch<br />
<br />
## Again, doesn't add anything. The failure of 'pkg load' is enough<br />
if (isempty (pkg ("describe", "foo")))<br />
error ("program: package foo is not installed");<br />
endif<br />
<br />
Beware that an installed package is not always a guarantee that a function<br />
will be available. Some packages may disable functions at build time, or<br />
specific functions may have specific runtime requirements.<br />
<br />
== Structures ==<br />
=== Retrieve a field value from all entries in a struct array ===<br />
==== Problem ====<br />
You have a struct array with multiple fields, and you want to access the value from a specific field from all elements. For example, you want to return the age from all patients in the following case:<br />
<br />
samples = struct ("patient", {"Bob", "Kevin", "Bob" , "Andrew"},<br />
"age", { 45 , 52 , 45 , 23 },<br />
"protein", {"H2B", "CDK2" , "CDK2", "Tip60" },<br />
"tube" , { 3 , 5 , 2 , 18 }<br />
);<br />
<br />
==== Solution ====<br />
Indexing the struct returns a comma separated list so use them to create a matrix.<br />
<br />
[samples(:).age]<br />
<br />
This however does not keep the original structure of the data, instead returning all values in a single column. To fix this, use {{Codeline|reshape()}}.<br />
<br />
reshape ([samples(:).age], size (samples))<br />
<br />
==== Discussion ====<br />
Returning all values in a comma separated lists allows you to make anything out of them. If numbers are expected, create a matrix by enclosing them in square brackets. But if strings are to be expected, a cell array can also be easily generated with curly brackets<br />
<br />
{samples(:).patient}<br />
<br />
You are also not limited to return all elements, you may use logical indexing from other fields to get values from the others:<br />
<br />
[samples([samples(:).age] > 34).tube] ## return tube numbers from all samples from patients older than 34<br />
[samples(strcmp({samples(:).protein}, "CDK2")).tube] ## return all tube numbers for protein CDK2<br />
<br />
== Array manipulation ==<br />
<br />
=== Select a slice from an n-D array ===<br />
<br />
==== Problem ====<br />
<br />
For an array {{Codeline|A}} with arbitrary number of dimensions, select, for example, the first column. This would be {{Codeline|A(:, 1)}} if {{Codeline|A}} was 2-D, {{Codeline|A(:, 1, :)}} if {{Codeline|A}} was 3-D, and so on.<br />
<br />
==== Solution ====<br />
<br />
One possibility is to use {{Codeline|subsref}} with the input {{Codeline|idx}} created dynamically with {{Codeline|repelems}} to have the right number of dimensions. This can be written as a function:<br />
<br />
<br />
{{Code||<syntaxhighlight lang="octave" style="font-size:13px"><br />
function [B]= array_slice (A,k,d)<br />
#return the k-th slice (row, column...) of A, with d specifying the dimension to slice on<br />
idx.type = "()";<br />
idx.subs = repelems ({':'}, [1;ndims(A)]);<br />
idx.subs(d) = k;<br />
B = subsref (A,idx);<br />
endfunction<br />
<br />
#test cases<br />
%!shared A<br />
%! A=rand(2, 3);<br />
%!assert (array_slice (A,1,2), A(:, 1))<br />
%! A=rand(2, 3, 4);<br />
%!assert (array_slice (A,2,1), A(2, :, :))<br />
%! A=rand(2, 3, 4, 5);<br />
%!assert (array_slice (A,1,2), A(:, 1, :, :))<br />
%! A=rand(2, 3, 4, 5, 6);<br />
%!assert (array_slice (A,2,3), A(:, :, 2, :, :))<br />
</syntaxhighlight>}}<br />
<br />
To remove the singleton dimension {{Codeline|d}} from the result {{Codeline|B}}, use <br />
{{Code||<syntaxhighlight lang="octave" style="font-size:13px"><br />
B = reshape(B, [size(B)([1:d-1 d+1:end])]);<br />
</syntaxhighlight>}}<br />
<br />
== Input/output ==<br />
=== Display matched elements from different arrays ===<br />
==== Problem ====<br />
You have two, or more, arrays with paired elements and want to print out a string about them. For example:<br />
<br />
keys = {"human", "mouse", "chicken"};<br />
values = [ 64 72 70 ];<br />
<br />
and you want to display:<br />
<br />
Calculated human genome GC content is 64%<br />
Calculated mouse genome GC content is 72%<br />
Calculated chicken genome GC content is 70%<br />
<br />
==== Solution ====<br />
Make a two rows cell array, with each paired data in a column and supply a cs-list to printf<br />
<br />
values = num2cell (values);<br />
new = {keys{:}; values{:}};<br />
printf ("Calculated %s genome GC content is %i%%\n", new{:})<br />
<br />
or in a single line:<br />
printf ("Calculated %s genome GC content is %i%%\n", {keys{:}; num2cell(values){:}}{:})<br />
<br />
<br />
==== Discussion ====<br />
{{Codeline|printf}} and family do not accept cell arrays as values. However, they keep repeating the template given as long as it has enough arguments to keep going. As such, the trick is on supplying a cs-list of elements which can be done by using a cell array and index it with {{Codeline|<nowiki>{}</nowiki>}}.<br />
<br />
Since values are stored in column-major order, paired values need to be on the same column. A new row of data can then be added later with {{Codeline|new(end+1,:) <nowiki>= {"Andrew", "Bob", "Kevin"}</nowiki>}}. Note that normal brackets are now being used for indexing.<br />
<br />
=== Swap values ===<br />
If you want to exchange the value between two variables without creating a dummy one, you can simply do:<br />
<br />
{{Code|Swap values without dummy variable|<syntaxhighlight lang="octave" style="font-size:13px"><br />
[b,a] = deal (a,b);<br />
</syntaxhighlight>}}<br />
<br />
=== Collect all output arguments of a function ===<br />
If you have a function that returns several values, e.g. <br />
<br />
{{Code||<syntaxhighlight lang="octave" style="font-size:13px"><br />
function [a b c]= myfunc ()<br />
[a,b,c] = deal (1,2,3); <br />
endfunction<br />
</syntaxhighlight>}}<br />
<br />
and you want to collect them all into a single cell (similarly to Python's zip() function) you can do:<br />
<br />
{{Code|Collect multiple output arguments|<syntaxhighlight lang="octave" style="font-size:13px"><br />
outargs = nthargout (1:3, @myfunc)<br />
</syntaxhighlight>}}<br />
<br />
=== Create a text table with fprintf===<br />
(a.k.a. A funny formatting trick with fprintf found by chance)<br />
<br />
Imagine that you want to create a text table with fprintf with 2 columns of 15 characters width and both right justified. How to do this thing?<br />
<br />
That's easy:<br />
<br />
If the variable Text is a cell array of strings (of length <15) with two columns and a certain number of rows, simply type for the kth row of Text<br />
{{Code||<syntaxhighlight lang="octave" style="font-size:13px"><br />
fprintf('%15.15s | %15.15s\n', Text{k,1}, Text{k,2});<br />
</syntaxhighlight>}}<br />
The syntax '%<n>.<m>s' allocates '<n>' places to write chars and display the '<m>' first characters of the string to display.<br />
<br />
Example:<br />
{{Code|Example create a text table with fprintf|<syntaxhighlight lang="octave" style="font-size:13px"><br />
octave:1> Text={'Hello','World'};<br />
octave:2> fprintf('%15.15s | %15.15s\n', Text{1,1}, Text{1,2})<br />
Hello | World<br />
</syntaxhighlight>}}<br />
<br />
===Load comma separated values (*.csv) files===<br />
<br />
{{Code|Load comma separated values files|<syntaxhighlight lang="octave" style="font-size:13px"><br />
A=textread("file.csv", "%d", "delimiter", ",");<br />
B=textread("file.csv", "%s", "delimiter", ",");<br />
inds = isnan(A);<br />
B(!inds) = num2cell(A(!inds))<br />
</syntaxhighlight>}}<br />
<br />
This gets you a 1 column cell array. You can reshape it to the original size by using the <code>reshape</code> function<br />
<br />
The next version of octave (3.6) implements the <code>CollectOutput</code> switch as seen in example 8 here: http://www.mathworks.com/help/techdoc/ref/textscan.html<br />
<br />
Another option is to use the function <code>csvread</code>, however this function can't handle non-numerical data.<br />
<br />
The probably best option is to use the function csv2cell() from the io package. This function can read mixed-type (numerical and text) .csv files, allows to specify other field separators than a comma and other text protection characters (default: " double quote) and can skip headerlines. If you have the io package installed and loaded, type "help csv2cell" at the Octave prompt for more info.<br />
<br />
===Load XML files===<br />
<br />
Reading XML in octave can be achieved using the java library [http://xerces.apache.org/ Xerces] (from apache). <br />
<br />
It seems that the matlab's xmlread is just a thin wrapper around the Xerces library. One should note however, that Java functions have the working directory set to the working directory when octave starts and the working directory is not modified by a cd in octave. Matlab has the same behavior, as Java does not provide a way to change the current working directory (http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4045688). To avoid any issues, it is thus better to use the absolute path to the XML file.<br />
<br />
You need the jar files xercesImpl.jar and xml-apis.jar from e.g. https://www.apache.org/dist/xerces/j/Xerces-J-bin.2.11.0.tar.gz (check for the latest version).<br />
Use javaaddpath to include these files:<br />
<br />
{{Code|Define java path|<syntaxhighlight lang="octave" style="font-size:1.1em"><br />
javaaddpath('/path/to/xerces-2_11_0/xercesImpl.jar');<br />
javaaddpath('/path/to/xerces-2_11_0/xml-apis.jar');<br />
</syntaxhighlight>}}<br />
<br />
A sample script:<br />
<br />
{{Code|Load XML file|<syntaxhighlight lang="octave" style="font-size:1.1em"><br />
filename = 'sample.xml';<br />
<br />
% These 3 lines are equivalent to xDoc = xmlread(filename) in matlab<br />
parser = javaObject('org.apache.xerces.parsers.DOMParser');<br />
parser.parse(filename); <br />
xDoc = parser.getDocument;<br />
<br />
% get first data element <br />
elem = xDoc.getElementsByTagName('data').item(0);<br />
% get text from child<br />
data = elem.getFirstChild.getTextContent<br />
% get attribute named att<br />
att = elem.getAttribute('att')<br />
</syntaxhighlight>}}<br />
<br />
The file <tt>sample.xml</tt>:<br />
<br />
{{Code|Sample XML file|<syntaxhighlight lang="xml" style="font-size:1.1em"><br />
<root><br />
<data att="1">hello</data><br />
</root><br />
</syntaxhighlight>}}<br />
<br />
===Using variable strings in commands===<br />
<br />
For example, to plot data using a string variable as a legend:<br />
<br />
Option 1 (simplest):<br />
{{Code|Using variable strings in commands. op1|<syntaxhighlight lang="octave" style="font-size:13px"><br />
legend = "-1;My data;";<br />
plot(x, y, legend);<br />
</syntaxhighlight>}}<br />
<br />
Option 2 (to insert variables):<br />
{{Code|Using variable strings in commands. op2|<syntaxhighlight lang="octave" style="font-size:13px"><br />
plot(x, y, sprintf("-1;%s;", dataName));<br />
</syntaxhighlight>}}<br />
<br />
Option 3 (not as neat):<br />
{{Code|Using variable strings in commands. op3|<syntaxhighlight lang="octave" style="font-size:13px"><br />
legend = 'my legend';<br />
plot_command = ['plot(x,y,\';',legend,';\')'];<br />
eval(plot_command);<br />
</syntaxhighlight>}}<br />
<br />
These same tricks are useful for reading and writing data files with unique names, etc.<br />
<br />
== Combinatorics ==<br />
=== Combinations with string characters ===<br />
==== Problem ====<br />
You want to get all combinations of different letters but {{codeline|nchoosek}} only accepts numeric input.<br />
<br />
==== Solution ====<br />
Convert your string to numbers and then back to characters.<br />
<br />
{{Code||<syntaxhighlight lang="octave"><br />
char (nchoosek (uint8 (string), n)<br />
</syntaxhighlight>}}<br />
==== Discussion ====<br />
A string in Octave is just a character matrix and can easily be converted to numeric form back and forth. Each character has an associated number (the {{codeline|asci}} function of the {{forge|miscellaneous}} package displays a nicely formatted conversion table).<br />
<br />
=== Permutations with repetition ===<br />
==== Problem ====<br />
You want to generate all possible permutations of a vector with repetition.<br />
<br />
==== Solution ====<br />
Use {{codeline|ndgrid}}<br />
<br />
{{Code||<syntaxhighlight lang="octave"><br />
[x y z] = ndgrid ([1 2 3 4 5]);<br />
[x(:) y(:) z(:)]<br />
</syntaxhighlight>}}<br />
<br />
==== Discussion ====<br />
It is possible to expand the code above and make it work for any length of permutations.<br />
<br />
{{Code||<syntaxhighlight lang="octave"><br />
cart = nthargout ([1:n], @ndgrid, vector);<br />
combs = cell2mat (cellfun (@(c) c(:), cart, "UniformOutput", false));<br />
</syntaxhighlight>}}<br />
<br />
== Mathematics ==<br />
=== Test if a number is a integer ===<br />
There are several methods to do this. The simplest method is probably {{Codeline|<nowiki>fix (x) == x</nowiki>}}<br />
<br />
=== Find if a number is even/odd ===<br />
==== Problem ====<br />
You have a number, or an array or matrix of them, and want to know if any of them is an odd or even number, i.e., their parity.<br />
==== Solution ====<br />
Check the remainder of a division by two. If the remainder is zero, the number is odd.<br />
<br />
mod (value, 2) ## 1 if odd, zero if even<br />
<br />
Since {{Codeline|mod()}} acceps a matrix, the following can be done:<br />
<br />
any (mod (values, 2)) ## true if at least one number in values is even<br />
all (mod (values, 2)) ## true if all numbers in values are odd<br />
<br />
any (!logical (mod (values, 2))) ## true if at least one number in values is even<br />
all (!logical (mod (values, 2))) ## true if all numbers in values are even<br />
<br />
==== Discussion ====<br />
Since we are checking for the remainder of a division, the first choice would be to use {{Codeline|rem()}}. However, in the case of negative numbers {{Codeline|mod()}} will still return a positive number making it easier for comparisons. Another alternative is to use {{Codeline|bitand (X, 1)}} or {{Codeline|bitget (X, 1)}} but those are a bit slower.<br />
<br />
Note that this solution applies to integers only. Non-integers such as 1/2 or 4.201 are neither even nor odd. If the source of the numbers are unknown, such as user input, some sort of checking should be applied for NaN, Inf, or non-integer values.<br />
<br />
==== See also ====<br />
Find if a number is an integer.<br />
<br />
=== Parametrized Functions ===<br />
==== Problem ====<br />
<br />
One sometimes needs to define a family of functions depending on a set of parameters, e.g., <math>f (x, y, z; a, b, c)</math> where <math>x, y, z</math> denote a the variables on which the function operates and <math>a, b, c</math> are the parameters used to chose one specific element of the family of functions.<br />
<br />
For example, let's say we need to compute the time evolution of the elongation of a spring for different values of the spring constant <math>k</math><br />
<br />
==== Solution ====<br />
We could solve the problem with the following code:<br />
<br />
{{Code|Solve spring equation for different values of the spring constant|<syntaxhighlight lang="octave" style="font-size:13px"><br />
t = linspace (0, 10, 100);<br />
function sprime = spring (s, t, k)<br />
x = s(1);<br />
v = s(2);<br />
sprime(1) = v;<br />
sprime(2) = -k * x;<br />
endfunction<br />
k = 1;<br />
x1 = lsode (@(x, t) spring (x, t, k), [1;0], t)(:, 1);<br />
k = 2;<br />
x2 = lsode (@(x, t) spring (x, t, k), [1;0], t)(:, 2);<br />
plot (t, x1, t, x2)<br />
legend ('x1', 'x2')<br />
</syntaxhighlight>}} <br />
<br />
[[File:solparfun.png|400px]]<br />
<br />
==== Discussion ====<br />
<br />
In the above example, the function "sprime" represents a family of functions of the variables <math>x, t</math> parametrized by the parameter <math>k</math>.<br />
<br />
The [http://www.gnu.org/software/octave/doc/interpreter/Anonymous-Functions.html#Anonymous-Functions anonymous function]<br />
{{Code||<syntaxhighlight lang="octave" style="font-size:13px"><br />
@(x, t) sprime (x, t, k)<br />
</syntaxhighlight>}}<br />
<br />
is a function of only <math>x, t</math> where the parameter <math>k</math> is 'frozen' to the value it has at the moment in the current scope.<br />
<br />
=== Distance between points ===<br />
==== Problem ====<br />
Given a set of points in space we want to calculate the distance between all of them. Each point is described by its components <math> (x_i,y_i,\ldots)</math>. Asusme that the points are saved in a matrix '''<tt>P</tt>''' with '''<tt>N</tt>''' rows (one for each point) and '''<tt>D</tt>''' columns, one for each component.<br />
==== Solution ====<br />
One way of proceeding is to use the broadcast properties of operators in GNU Octave. The square distance between the points can be calculated with the code<br />
<!-- {{SyntaxHighlight| --><br />
{{Code|Calculate square distance between points|<syntaxhighlight lang="octave" style="font-size:13px"><br />
[N, dim] = size (P);<br />
Dsq = zeros (N); <br />
for i = 1:dim<br />
Dsq += (P(:,i) - P(:,i)').^2;<br />
endfor<br />
</syntaxhighlight>}}<br />
This matrix is symmetric with zero diagonal.<br />
<br />
Similarly the vectors pointing from one point to the another is<br />
<!-- {{SyntaxHighlight| --><br />
{{Code|Calculate radius vector between points|<syntaxhighlight lang="octave" style="font-size:13px"><br />
R = zeros (N,N,dim); <br />
for i = 1:dim<br />
R(:,:,i) = P(:,i) - P(:,i)';<br />
endfor<br />
</syntaxhighlight>}}<br />
<br />
The relation between <tt>Dsq</tt> and <tt>R</tt> is<br />
<!-- {{SyntaxHighlight| --><br />
{{Code||<syntaxhighlight lang="octave" style="font-size:13px"><br />
Dsq = sumsq (R,3); <br />
</syntaxhighlight>}}<br />
<br />
==== Discussion ====<br />
The calculation can be implemented using functions like <tt>cellfun</tt> and avoid the loop over components of the points. However in most cases we will have more points than components and the improvement, if any, will be minimal.<br />
<br />
Another observation is that the matrix Dsq is symmetric and we could store only the lower or upper triangular part. To use this optimization in a practical way check the help of the functions <tt>vech</tt> and <tt>unvech</tt> (this one is in the Forge package ''general''). Two functions that haven't seen the light yet are <tt>sub2ind_tril</tt> and <tt>ind2sub_tril</tt> (currently private functions in the [[Mechanics_package | Forge package mechanics]]) that are useful to index the elements of a vector constructed with the function <tt>vech</tt>. Each page (the third index) of the multidimensional array <tt>R</tt> is an anti-symmetric matrix and we could also save some memory by keeping only one of the triangular submatrices.<br />
<br />
Check the [[Geometry package]] for many more distance functions (points, lines, polygons, etc.).<br />
<br />
<br />
[[Category:Tutorials]]</div>Carandraughttps://wiki.octave.org/wiki/index.php?title=Emacs&diff=9572Emacs2016-09-15T11:50:11Z<p>Carandraug: copy content from the emacs section on the manual (which has been removed for 4.2)</p>
<hr />
<div>This is the default octave text editor.<br />
<br />
[http://omni.isr.ist.utl.pt/~etienne/EmacsEditingOctaveCode.jpg Emacs Editing Octave Code]<br />
<br />
= Emacs Octave Support =<br />
<br />
The development of Octave code can greatly be facilitated using Emacs<br />
with Octave mode, a major mode for editing Octave files which can, for<br />
example:<br />
<br />
* automatically indent the code<br />
* do some of the typing (with Abbrev mode)<br />
* highlight keywords, comments, strings, etc. in different faces (with Font-lock mode on devices that support it).<br />
<br />
It is also possible to run Octave from within Emacs, either by directly<br />
entering commands at the prompt in a buffer in Inferior Octave mode, or<br />
by interacting with Octave from within a file with Octave code. This is<br />
useful in particular for debugging Octave code.<br />
<br />
Finally, you can convince Octave to use the Emacs info reader for<br />
{{codeline|help -i}}.<br />
<br />
All functionality is provided by the Emacs Lisp package EOS (Emacs<br />
Octave Support).<br />
<br />
Please contact [mailto:Kurt.Hornik@wu-wien.ac.at Kurt Hornik] if you have<br />
any questions or suggestions on using EOS.<br />
<br />
== Installing EOS ==<br />
<br />
The Emacs package EOS consists of the three files {{Path|octave-mod.el}},<br />
{{Path|octave-inf.el}}, and {{Path|octave-hlp.el}}. These files,<br />
or better yet their byte-compiled versions, should be somewhere in your Emacs<br />
load-path.<br />
<br />
If you have GNU Emacs with a version number at least as high as 19.35,<br />
you are all set up, because EOS is respectively will be part of GNU<br />
Emacs as of version 19.35.<br />
<br />
Otherwise, copy the three files from the {{Path|emacs}} subdirectory of<br />
the Octave distribution to a place where Emacs can find them (this<br />
depends on how your Emacs was installed). Byte-compile them for speed<br />
if you want.<br />
<br />
== Using Octave Mode ==<br />
<br />
If you are lucky, your sysadmins have already arranged everything so<br />
that Emacs automatically goes into Octave mode whenever you visit an<br />
Octave code file as characterized by its extension {{Path|.m}}.<br />
If not, proceed as follows.<br />
<br />
<ol><br />
<li>To begin using Octave mode for all {{Path|.m}} files you visit, add the following lines to a file loaded by Emacs at startup time, typically your {{Path|~/.emacs}} file:</li><br />
<pre><br />
(autoload 'octave-mode "octave-mod" nil t)<br />
(setq auto-mode-alist<br />
(cons '("\\.m$" . octave-mode) auto-mode-alist))<br />
</pre><br />
<li>Finally, to turn on the abbrevs, auto-fill and font-lock features automatically, also add the following lines to one of the Emacs startup files:</li><br />
<pre><br />
(add-hook 'octave-mode-hook<br />
(lambda ()<br />
(abbrev-mode 1)<br />
(auto-fill-mode 1)<br />
(if (eq window-system 'x)<br />
(font-lock-mode 1))))<br />
</pre><br />
</ol><br />
See the Emacs manual for more information about how to customize<br />
Font-lock mode.<br />
<br />
In Octave mode, the following special Emacs commands can be used in<br />
addition to the standard Emacs commands.<br />
<br />
; {{key press|C-h|m}}<br />
: Describe the features of Octave mode.<br />
<br />
; {{key press|LFD}}<br />
: Reindent the current Octave line, insert a newline and indent the new line ({{codeline|octave-reindent-then-newline-and-indent}}). An abbrev before point is expanded if {{codeline|abbrev-mode}} is non-{{codeline|nil}}.<br />
<br />
; {{key press|TAB}}<br />
: Indents current Octave line based on its contents and on previous lines ({codeline|indent-according-to-mode}}).<br />
<br />
; {{key press|;}}<br />
: Insert an "electric" semicolon ({codeline|octave-electric-semi}}). If {{codeline|octave-auto-indent}} is non-{{codeline|nil}}, reindent the current line. If {{codeline|octave-auto-newline}} is non-{{codeline|nil}}, automagically insert a newline and indent the new line.<br />
<br />
; {{key press|`}}<br />
: Start entering an abbreviation ({{codeline|octave-abbrev-start}}). If Abbrev mode is turned on, typing {{key press|`C-h}} or {{key press|`?}} lists all abbrevs. Any other key combination is executed normally. Note that all Octave abbrevs start with a grave accent.<br />
<br />
; {{key press|M-LFD}}<br />
: Break line at point and insert continuation marker and alignment ({{codeline|octave-split-line}}).<br />
<br />
; {{key press|M-TAB}}<br />
: Perform completion on Octave symbol preceding point, comparing that symbol against Octave's reserved words and built-in variables ({{codeline|octave-complete-symbol}}).<br />
<br />
; {{key press|M-C-a}}<br />
: Move backward to the beginning of a function ({{codeline|octave-beginning-of-defun}}). With prefix argument {{codeline|N}}, do it that many times if {codeline|N}} is positive; otherwise, move forward to the {codeline|N}}-th following beginning of a function.<br />
<br />
; {{key press|M-C-e}}<br />
: Move forward to the end of a function ({{codeline|octave-end-of-defun}}). With prefix argument {{codeline|N}}, do it that many times if {{codeline|N}} is positive; otherwise, move back to the {{codeline|N}}-th preceding end of a function.<br />
<br />
; {{key press|M-C-h}}<br />
: Puts point at beginning and mark at the end of the current Octave function, i.e., the one containing point or following point ({{codeline|octave-mark-defun}}).<br />
<br />
; {{key press|M-C-q}}<br />
: Properly indents the Octave function which contains point ({{codeline|octave-indent-defun}}).<br />
<br />
; {{key press|M-;}}<br />
: If there is no comment already on this line, create a code-level comment (started by two comment characters) if the line is empty, or an in-line comment (started by one comment character) otherwise ({{codeline|octave-indent-for-comment}}). Point is left after the start of the comment which is properly aligned.<br />
<br />
; {{key press|C-c|;}}<br />
: Puts the comment character {{codeline|#}} (more precisely, the string value of {{codeline|octave-comment-start}}) at the beginning of every line in the region ({{codeline|octave-comment-region}}). With just {{key press|C-u}} prefix argument, uncomment each line in the region. A numeric prefix argument {{codeline|N}} means use {{codeline|N}} comment characters.<br />
<br />
; {{key press|C-c|:}}<br />
: Uncomments every line in the region ({{codeline|octave-uncomment-region}}).<br />
<br />
; {{key press|C-c|C-p}}<br />
: Move one line of Octave code backward, skipping empty and comment lines ({{codeline|octave-previous-code-line}}). With numeric prefix argument {{codeline|N}}, move that many code lines backward (forward if {{codeline|N}} is negative).<br />
<br />
; {{key press|C-c|C-n}}<br />
: Move one line of Octave code forward, skipping empty and comment lines ({{codeline|octave-next-code-line}}). With numeric prefix argument {{codeline|N}}, move that many code lines forward (backward if {{codeline|N}} is negative).<br />
<br />
; {{key press|C-c|C-a}}<br />
: Move to the `real' beginning of the current line<br />
({{codeline|octave-beginning-of-line}}). If point is in an empty or comment line, simply go to its beginning; otherwise, move backwards to the beginning of the first code line which is not inside a continuation statement, i.e., which does not follow a code line ending in {{codeline|...}} or {{codeline|\}}, or is inside an open parenthesis list.<br />
<br />
; {{key press|C-c|C-e}}<br />
: Move to the `real' end of the current line ({{codeline|octave-end-of-line}}). If point is in a code line, move forward to the end of the first Octave code line which does not end in {{codeline|...}} or {{codeline|\}} or is inside an open parenthesis list. Otherwise, simply go to the end of the current line.<br />
<br />
; {{key press|C-c|M-C-n}}<br />
: Move forward across one balanced begin-end block of Octave code ({{codeline|octave-forward-block}}). With numeric prefix argument {{codeline|N}}, move forward across {{codeline|n}} such blocks (backward if {{codeline|N}} is negative).<br />
<br />
; {{key press|C-c|M-C-p}}<br />
: Move back across one balanced begin-end block of Octave code ({{codeline|octave-backward-block}}). With numeric prefix argument {{codeline|N}}, move backward across {{codeline|N}} such blocks (forward if {{codeline|N}} is negative).<br />
<br />
; {{key press|C-c|M-C-d}}<br />
: Move forward down one begin-end block level of Octave code ({{codeline|octave-down-block}}). With numeric prefix argument, do it that many times; a negative argument means move backward, but still go down one level.<br />
<br />
; {{key press|C-c|M-C-u}}<br />
: Move backward out of one begin-end block level of Octave code ({{codeline|octave-backward-up-block}}). With numeric prefix argument, do it that many times; a negative argument means move forward, but still to a less deep spot.<br />
<br />
; {{key press|C-c|M-C-h}}<br />
: Put point at the beginning of this block, mark at the end ({{codeline|octave-mark-block}}). The block marked is the one that contains point or follows point.<br />
<br />
; {{key press|C-c|]}}<br />
: Close the current block on a separate line ({{codeline|octave-close-block}}). An error is signaled if no block to close is found.<br />
<br />
; {{key press|C-c|f}}<br />
: Insert a function skeleton, prompting for the function's name, arguments and return values which have to be entered without parentheses ({{codeline|octave-insert-defun}}).<br />
<br />
; {{key press|C-c|C-h}}<br />
: Search the function, operator and variable indices of all info files with documentation for Octave for entries ({{codeline|octave-help}}). If used interactively, the entry is prompted for with completion. If multiple matches are found, one can cycle through them using the standard {{codeline|,}} ({{codeline|Info-index-next}}) command of the Info reader.<br />
:<br />
: The variable {{codeline|octave-help-files}} is a list of files to search through and defaults to {{codeline|'("octave")}}. If there is also an Octave Local Guide with corresponding info file, say, {{Path|octave-LG}}, you can have {{codeline|octave-help}} search both files by {{codeline|(setq octave-help-files '("octave" "octave-LG"))}} in one of your Emacs startup files.<br />
<br />
A common problem is that the {{key press|RET}} key does ''not'' indent the<br />
line to where the new text should go after inserting the newline. This<br />
is because the standard Emacs convention is that {{key press|RET}} (aka<br />
{{key press|C-m}}) just adds a newline, whereas {{key press|LFD}} (aka {{key press|C-j}}) adds a<br />
newline and indents it. This is particularly inconvenient for users with<br />
keyboards which do not have a special {{key press|LFD}} key at all; in such<br />
cases, it is typically more convenient to use {{key press|RET}} as the {{key press|LFD}}<br />
key (rather than typing {{key press|C-j}}).<br />
<br />
You can make {{key press|RET}} do this by adding<br />
<br />
<pre><br />
(define-key octave-mode-map "\C-m"<br />
'octave-reindent-then-newline-and-indent)<br />
</pre><br />
<br />
to one of your Emacs startup files. Another, more generally applicable<br />
solution is<br />
<br />
<pre><br />
(defun RET-behaves-as-LFD ()<br />
(let ((x (key-binding "\C-j")))<br />
(local-set-key "\C-m" x)))<br />
(add-hook 'octave-mode-hook 'RET-behaves-as-LFD)<br />
</pre><br />
<br />
(this works for all modes by adding to the startup hooks, without having<br />
to know the particular binding of {{key press|RET}} in that mode!). Similar<br />
considerations apply for using {{key press|M-RET}} as {{key press|M-LFD}}. As<br />
[mailto:bwarsaw@cnri.reston.va.us Barry A. Warsaw] says in the documentation for his<br />
{{codeline|cc-mode}}, "This is a very common question. :-) If you want<br />
this to be the default behavior, don't lobby me, lobby RMS!"<br />
<br />
The following variables can be used to customize Octave mode.<br />
<br />
; {{codeline|octave-auto-indent}}<br />
: Non-{{codeline|nil}} means auto-indent the current line after a semicolon or space. Default is {{codeline|nil}}.<br />
<br />
; {{codeline|octave-auto-newline}}<br />
: Non-{{codeline|nil}} means auto-insert a newline and indent after semicolons are typed. The default value is {{codeline|nil}}.<br />
<br />
; {{codeline|octave-blink-matching-block}}<br />
: Non-{{codeline|nil}} means show matching begin of block when inserting a space, newline or {{codeline|;}} after an else or end keyword. Default is {{codeline|t}}. This is an extremely useful feature for automatically verifying that the keywords match --- if they don't, an error message is displayed.<br />
<br />
; {{codeline|octave-block-offset}}<br />
: Extra indentation applied to statements in block structures. Default is 2.<br />
<br />
; {{codeline|octave-continuation-offset}}<br />
: Extra indentation applied to Octave continuation lines. Default is 4.<br />
<br />
; {{codeline|octave-continuation-string}}<br />
: String used for Octave continuation lines. Normally {{codeline|\}}.<br />
<br />
; {{codeline|octave-mode-startup-message}}<br />
: If {{codeline|t}} (default), a startup message is displayed when Octave mode is called.<br />
<br />
If Font Lock mode is enabled, Octave mode will display<br />
<br />
* strings in {{codeline|font-lock-string-face}}<br />
<br />
* comments in {{codeline|font-lock-comment-face}}<br />
<br />
* the Octave reserved words (such as all block keywords) and the text functions (such as {{codeline|cd}} or {{codeline|who}}) which are also reserved using {{codeline|font-lock-keyword-face}}<br />
<br />
* the built-in operators ({{codeline|&&}}, {{codeline|<nowiki>==</nowiki>}}, {{codeline|...}}) using {{codeline|font-lock-reference-face}}<br />
<br />
* and the function names in function declarations in {{codeline|font-lock-function-name-face}}.<br />
<br />
There is also rudimentary support for Imenu (currently, function<br />
names can be indexed).<br />
<br />
You can generate {{Path|TAGS}} files for Emacs from Octave {{Path|.m}} files using<br />
the shell script {{codeline|octave-tags}} that is installed alongside your copy of<br />
Octave.<br />
<br />
Customization of Octave mode can be performed by modification of the<br />
variable {{codeline|octave-mode-hook}}. If the value of this variable is<br />
non-{{codeline|nil}}, turning on Octave mode calls its value.<br />
<br />
If you discover a problem with Octave mode, you can conveniently send a<br />
bug report using {{key press|C-c|C-b}} ({{codeline|octave-submit-bug-report}}). This<br />
automatically sets up a mail buffer with version information already<br />
added. You just need to add a description of the problem, including a<br />
reproducible test case and send the message.<br />
<br />
== Running Octave from Within Emacs ==<br />
<br />
The package octave provides commands for running an inferior<br />
Octave process in a special Emacs buffer. Use<br />
{{key press|M-x}} {{codeline|run-octave}}<br />
to directly start an inferior Octave process. If Emacs does not know<br />
about this command, add the line<br />
{{codeline|(autoload 'run-octave "octave-inf" nil t)}}<br />
to your {{Path|.emacs}} file.<br />
<br />
This will start Octave in a special buffer the name of which is<br />
specified by the variable {{codeline|inferior-octave-buffer}} and defaults to<br />
"*Inferior Octave*". From within this buffer, you can<br />
interact with the inferior Octave process as usual, i.e., by entering<br />
Octave commands at the prompt. The buffer is in Inferior Octave mode,<br />
which is derived from the standard Comint mode, a major mode for<br />
interacting with an inferior interpreter. See the documentation for<br />
{{codeline|comint-mode}} for more details, and use {{key press|C-h|b}} to find out<br />
about available special keybindings.<br />
<br />
You can also communicate with an inferior Octave process from within<br />
files with Octave code (i.e., buffers in Octave mode), using the<br />
following commands.<br />
<br />
; {{key press|C-c|i|l}}<br />
: Send the current line to the inferior Octave process ({{codeline|octave-send-line}}). With positive prefix argument {{codeline|N}}, send that many lines. If {{codeline|octave-send-line-auto-forward}} is non-{{codeline|nil}}, go to the next unsent code line.<br />
<br />
; {{key press|C-c|i|b}}<br />
: Send the current block to the inferior Octave process ({{codeline|octave-send-block}}).<br />
<br />
; {{key press|C-c|i|f}}<br />
: Send the current function to the inferior Octave process ({{codeline|octave-send-defun}}).<br />
<br />
; {{key press|C-c|i|r}}<br />
: Send the region to the inferior Octave process ({{codeline|octave-send-region}}).<br />
<br />
; {{key press|C-c|i|s}}<br />
: Make sure that `inferior-octave-buffer' is displayed ({{codeline|octave-show-process-buffer}}).<br />
<br />
; {{key press|C-c|i|h}}<br />
: Delete all windows that display the inferior Octave buffer ({{codeline|octave-hide-process-buffer}}).<br />
<br />
; {{key press|C-c|i|k}}<br />
: Kill the inferior Octave process and its buffer ({{codeline|octave-kill-process}}).<br />
<br />
The effect of the commands which send code to the Octave process can be<br />
customized by the following variables.<br />
<br />
; {{codeline|octave-send-echo-input}}<br />
: Non-{{codeline|nil}} means echo input sent to the inferior Octave process. Default is {{codeline|t}}.<br />
<br />
; {{codeline|octave-send-show-buffer}}<br />
Non-{{codeline|nil}} means display the buffer running the Octave process after sending a command (but without selecting it). Default is {{codeline|t}}.<br />
<br />
If you send code and there is no inferior Octave process yet, it will be<br />
started automatically.<br />
<br />
The startup of the inferior Octave process is highly customizable.<br />
The variable {{codeline|inferior-octave-startup-args}} can be used for<br />
specifying command lines arguments to be passed to Octave on startup<br />
as a list of strings. For example, to suppress the startup message and<br />
use traditional mode, set this to {{codeline|'("-q" "--traditional")}}.<br />
You can also specify a startup file of Octave commands to be loaded on<br />
startup; note that these commands will not produce any visible output<br />
in the process buffer. Which file to use is controlled by the variable<br />
{{codeline|inferior-octave-startup-file}}. If this is {{codeline|nil}}, the file<br />
{{Path|~/.emacs-octave}} is used if it exists.<br />
<br />
And finally, {{codeline|inferior-octave-mode-hook}} is run after starting the<br />
process and putting its buffer into Inferior Octave mode. Hence, if you<br />
like the up and down arrow keys to behave in the interaction buffer as<br />
in the shell, and you want this buffer to use nice colors, add<br />
<br />
<pre><br />
(add-hook 'inferior-octave-mode-hook<br />
(lambda ()<br />
(turn-on-font-lock)<br />
(define-key inferior-octave-mode-map [up]<br />
'comint-previous-input)<br />
(define-key inferior-octave-mode-map [down]<br />
'comint-next-input)))<br />
</pre><br />
<br />
to your {{Path|.emacs}} file. You could also swap the roles of {{key press|C-a}}<br />
({{codeline|beginning-of-line}}) and {{key press|C-c|C-a}} ({{codeline|comint-bol}}) using<br />
this hook.<br />
<br />
Note that if you set your Octave prompts to something different<br />
from the defaults, make sure that {{codeline|inferior-octave-prompt}} matches<br />
them. Otherwise, ''nothing'' will work, because Emacs will not know<br />
when Octave is waiting for input, or done sending output.<br />
<br />
== Using the Emacs Info Reader for Octave ==<br />
<br />
You may also use the Emacs Info reader with Octave's {{codeline|doc}} function.<br />
For this, the package gnuserv needs to be installed.<br />
<br />
If gnuserv is installed, add the lines<br />
<br />
<pre><br />
(autoload 'octave-help "octave-hlp" nil t)<br />
(require 'gnuserv)<br />
(gnuserv-start)<br />
</pre><br />
<br />
to your {{Path|.emacs}} file.<br />
<br />
You can use either plain Emacs Info or the function {{codeline|octave-help}}<br />
as your Octave info reader (for {{codeline|help -i}}). In the former case,<br />
use {{codeline|info_program ("info-emacs-info")}}.<br />
The latter is perhaps more attractive because it allows one to look up keys<br />
in the indices of several info files related to Octave (provided<br />
that the Emacs variable {{codeline|octave-help-files}} is set correctly). In<br />
this case, use {{codeline|info_program ("info-emacs-octave-help")}}.<br />
<br />
If you use Octave from within Emacs, it is best to add these settings to<br />
your {{Path|~/.emacs-octave}} startup file (or the file pointed to by the<br />
Emacs variable {{codeline|inferior-octave-startup-file}}).<br />
<br />
[[Category:Editors]]</div>Carandraug