Mike on the MATLAB Desktop

June 2nd, 2008

Tables in MATLAB with uitable


I’d like to welcome guest blogger Denis Hanson from the GUI Building team. Denis will occasionally be blogging here on the Inside the MATLAB Desktop blog.

In R2008a, we added the uitable control, as well as support for this new control in Guide. The uitable component enables the display of data in a two dimensional table. You can use the Property Inspector or the new Table Property Editor to get and set uitable object property values (to open the Property Inspector type inspect at the command prompt; to open the Table Property Editor, right-click your uitable in Guide and select Table Property Editor…).

The Table Property Editor makes it easy to define the layout of a table inside Guide. The Property Inspector could be used to achieve the same results, though it’s not targeted to uitable. Lets look at using the Table Property Editor to setup a uitable.

Table properties fall into four natural categories, which are presented on separate panels. Here’s a listing of each of the Table Property Editor’s panels, and what you can do on each:

  • Columns – set column names, format, size, and editability
  • Rows – set row names
  • Data – select data to display in the table
  • Colors – set colors and control row striping

Notice also that at the top of each panel is a help section. The text in the panel will change to reflect the option that is currently selected on the property panel.

Let’s look at each of the panels in detail.

Columns Panel

The Column Headers section of this panel lets you control how and if column headers are displayed. The Column Definitions section of this panel lets you tweak properties for each column and also allows the insertion, removal and rearranging of columns.

The Format column in the Column Definitions table specifies how the data should be formated for viewing. Here are each of the options and what they do:

  • Let MATLAB Choose - MATLAB chooses a format that most closely matches the underlying column data. For example, if the data in the column is doubles, the Numeric display option will be used.
  • Choice List - allows you to enter a series of series of values that will be displayed in a popupmenu. This option is especially useful if the column is editable and you want to restrict the values that they user can enter.
  • Format - lets you choose from a pre-defined list of formats for displaying numeric data. The options are the same as those found in the format function.

Rows Panel

The Rows panel lets you define how row headers are displayed. Row headers are shown in an additional column at the left edge of the table. They do not contain table data values. If shown, they typically display the row number, but you can enter a custom name for each row.

Data Panel

The Data panel lets you populate the table with data from workspace variables. A table row will be created for each row in your data set and a table column will be created for each column in your data set. Once you have saved the data into the table, the table contains a copy of the data. The table data is not linked to the workspace variable so further modifications to the workspace variable will not be reflected in the table.

The values you set here are used to populate the table when your figure is displayed. This is useful if you have canned data that does not change. If your data is not fixed, you should select the Do not set data value and leave the table empty option. You will then need to load table data programmatically.

Colors Panel

The Colors panel lets you define the background, foreground, and row-striping colors used to paint the cells in the table. When row-striping is on the table paints odd and even rows using different background colors. The striping effect makes it easier for a user to scan the data in a table row, especially if there are many rows of data.

This was a world-wind tour of the new uitable control - in a future post, we’ll show you how to use the new control in a real application.

Let us know what you think about uitable!


-by Denis Hanson, The MathWorks

69 Responses to “Tables in MATLAB with uitable”

  1. Oliver A. Chapman, P.E. replied on :

    Denis,

    Thanks for the column. But, I’m having trouble following the beginning. I’ve made some GUIs & untables before, but never with Guide. So, I follow you instructions: I type “inspect” and fired up Guide. But, I don’t see my “uitable” in Guide. Besides that, Guide seems to default into some generic figure, not a GUI.

    What am I missing?

  2. Ken replied on :

    Hi Oliver,

    Make sure to start up Guide first, then create a uitable from within Guide (rather than creating on from the command line first). When Guide first starts up, you’ll have a blank figure window on which you can drag UI controls.

    -Ken

  3. Moran replied on :

    Hi Ken/Denis,

    Thanks! This addition is very useful.

    However, there is one thing that seems to be missing - can you get the selected row or column identifiers? This would be really useful when using uitable to present a database from which the user can extract specific rows.

    I see that ‘evendata’ returns the selected indices, but is there a way to get this as an object property?

    Thanks!

  4. Denis replied on :

    Hi Moran,

    The current version of uitable does not contain properties for selectedRow and selectedColumn. These properties are at the top of our list of enhancements for uitable.

    You can use the values in CellSelectionCallback’s eventdata to track the selections as they occur, saving the selection indices into workspace variables.

    -Denis

  5. Liang Zhimo replied on :

    thank you for your column,but I still have a little trouble on it:when I use a table in a form which is used to input a matrix, I don’t know how to fix the column or row size of the table by command line (not inspector).Could you give me some advise?

  6. Denis replied on :

    Hi Liang,

    To control the column widths from the command line you use the set command. Here is an example that sets the first column to 100 pixels, the second column to 60 pixels, then autosizes the third column.

    set(uitable_handle, ‘ColumnWidth’, {100 60 ‘auto’})

    To make all columns in a table use autosizing, use

    set(uitable_handle, ‘ColumnWidth’, ‘auto’)

    As these examples show, the value for ColumnWidth is either a 1–by-n cell array or ‘auto’. The width used for ‘auto’ is the greater of (a) the width of the column header, and (b) 75 pixels.

    There is no property to control row size.

  7. bswang replied on :

    I use a uitable in guide. The uitable works well on the matlab environment. But when i build the mytest.m into the mytest.exe, the uitable doesn’t work because the data in the uitable can’t be displayed. why?

  8. Mike replied on :

    bswang,

    Depending on where your data is coming from, it may not be available from your standalone program (e.g. importing from a text or mat file that is located somewhere relative to your inside-MATLAB session, etc). Or, if you have multiple MATLABs/MCRs installed, the runtime environment may be different than what you expect.

    What you should do is dump the data to the console to verify that the data is actually available inside your program. If that works, you should open a help ticket with tech support so they can help you resolve the UI issue.

  9. Etienne replied on :

    Hello,

    Is it possible to change the background color of a particular cell?

  10. Ken replied on :

    Hi Etienne,

    It isn’t currently possible to change the background color of a particular cell in a uitable - I’ve created an enhancement request for this.

    Note that you can change the background of all the cells, described in the doc for uitable

    -Ken

  11. Yong Yang replied on :

    Hello,
    In the standalone application, the data of the uitable control can not display. Why does it happen?

  12. Ken replied on :

    Hi Yong,

    I don’t quite understand your question. Please contact technical support for assitance.

    -Ken

  13. din replied on :

    hello…may i know about matlab command(absolute command)….i aready has the prog…but they use command table1 / table2…..matlab say that command aready absolute….so…may i know the latest command to replace table1 or table2 command?

  14. Gary replied on :

    Hello,

    I have created an user interface with an Uitable for user to input some parameters and then click on an “OK” button to finish entering data (I don’t expect the user to click on a cell then click on “OK” to finish). The Uitable and the “OK” button are on the same figure. My problem is that the Uitable can never retrive the last cell edited, no matter I use CellEditCallback or CellSelectionCallback. I use KeyPressFunction to collect the last data, but it won’t work if the user just want to edit a single number of one cell. Is there any workaround you can suggest? I’m using R2008a. Thank you.

    Gary

  15. Ken replied on :

    Hi Gary,

    The edits to a cell aren’t committed until the cell loses focus. Could you explain in more detail what you are trying to do?

    -Ken

  16. Tony replied on :

    Hi Gary,

    I ran into the same problem as did Ken. Here is my scenario and perspective, perhaps this can help describe at least a similar issue.

    The online help has the following “Note.”

    “Note In order for the CellEditCallback to be issued, after modifying a table cell the user must hit Enter or click somewhere else within the figure containing the table. Editing a cell’s value and then clicking another figure or other window does not save the new value to the data table, and does not fire the CellEditCallback.”

    I have an “OK” button *within* the same figure. Therefore, I would expect the CellEditCallback function to be called after entering a value in a cell and then clicking “OK.” However, this does not happen. I too would appreciate a possible work-around.

    Thanks for your help.
    Tony

  17. Tony replied on :

    Hi Ken,

    Please excuse me. I interchanged your name with Gary’s in the above note. (I meant to address the above note to you, and state that my problem is similar to Gary’s.) I too am running R2008a.

    Also, to refine my point, I expect that when I click “OK” after editing a cell, this click would cause the edited cell to lose focus, and since I am clicking within the same figure, I would expect the CellEditCallback to be issued.

    Thanks again,
    Tony

  18. Ken replied on :

    Hi Tony and Gary,

    Unfortunately, there is a bug in R2008a that prevents the cell edit from being committed on table focus lost. The only work around is to click on another cell. This has been fixed in R2008b.

    -Ken

  19. MooS replied on :

    Hello,

    Is it posible to highlight (select) a cell using the object handle of the uitable (e.g. by commands in the ‘base’ workspace). I have two figures, one with the table and one with a surface. I would like to show which point in the surface matches to the cell in the uitable by clicking in the surface….

    MooS

  20. Ken replied on :

    Hi MooS,

    There is not currently a way to programmatically set the selection in a uitable. Please submit an enhancement request here.

    -Ken

  21. MooS replied on :

    Hi Ken,

    Just submitted the request. Hope the functionality will be added soon. Thanks for your help!

    -MooS

  22. Nadia replied on :

    Hello,
    I’m working with a uitable object in Matlab 2008b.
    I would like to know how to reference each cell (with column and row, I guess…).
    Is there a way to Enable/Disable a full row depending on the value of a logical cell (true/false)???

    Thank you!
    Nadia.

  23. Ken replied on :

    Hi Nadia,

    There isn’t yet a way to reference each cell or disable a particular row. You can request that feature here.

    -Ken

  24. Tim Doyle replied on :

    Hi I am trialing R2008b at the moment and am really liking the uitables!

    One question though. Can I clear the selection of data from the table. That doesn’t make sense at all! Ok here’s the problem.

    Open a data file, display in the uitable. User selects some data does stuff with it. While that data is still selected in the table, the user opens a new file, the CellSelectionCallback seems to get called on the new data, which is different, (actually I think it is trying to reference data that is not there until the new data loads) consequently I get an error (index out of bounds).

    So lets say columns 2 and 3 from row 8 to 108 are selected. When I load a new file I want there to be no selction.

    Does that make sense?

    Is this possible?

    Thanks,
    Tim.

  25. Tim replied on :

    Hi there.

    I have remodelled a program using gui of matlab. Everything works fine. The only real problem i have is that when i am using uitable in a figure to let the user store data in, the last data entered is not saved if the user does not press enter or selects something else in the uitable before exiting the figure (by pressing a button). I really want this to be done automatically since the users keep making the same mistake. Is there a way to trigger matlab to select something else or confirm a data change some other way?

    Thanks in advance,

    Tim R.

  26. Ken replied on :

    Hi Tim,

    There is a bug in R2008a that prevents the cell edit from being committed until focus is lost. This has been fixed in R2008b.

    See my previous comment on the issue here.

    -Ken

  27. Javier Rivera replied on :

    To whom ever may concern,

    How can I load data into uitable created by guide such that it loads and displays the data matrix without the cliking on the cell and after the table has been created?

    Is there a update table callback function (no keystroke or mouse click required)? If so where is it?

    Thanks,

    Javier Rivera
    PS. Sample call below:

    function uitable1_CellSelectionCallback(hObject, eventdata, handles)
    % hObject handle to uitable1 (see GCBO)
    % eventdata structure with the following fields (see UITABLE)
    % Indices: row and column indices of the cell(s) currently selecteds
    % handles structure with handles and user data (see GUIDATA)

    data = get(gcbo,’Data’);
    data(1,1) = {’intSTALength’};
    if ~isempty(handles.intSTALength)
    data(1,2) = {num2str(handles.intSTALength)};
    end

    set(hObject,’Data’,data);
    % Choose default command line output for tegui2
    handles.output = hObject;
    % Update handles structure
    guidata(hObject, handles);

    % Only works if you click on cell (cell edit)

  28. Javier Rivera replied on :

    Never mind the question #27 above, it can be handled using

    set(handles.uitable1,’Data’,data)

    rather than a call back.

    Thanks,

    Javier

  29. Morris Hirsch replied on :

    It would be useful if the names column (or any column) could hold things other than text, like a Checkbox or Pushbutton.

    In my application, the rest of each row would have data, but the controls would show which are “active” or some other attributes.

    Without this ability, I can put the controls in a separate panel next to the table, and hope they stay aligned on resizes.

  30. Ken replied on :

    Hi Morris,

    I will pass along your request.

    -Ken

  31. Sevin replied on :

    Hi,

    Is it possible to show the Data in a uitable centered? The data format in my uitable are only integer or “bank” (fix dollar ant cents). The column titles are centered by default but the data is not. How can I make both centered?

    Also, is there a way to chnage format of a cell in an uitable? For example, cell(4,10): bold.

    Thanks…

  32. Ken replied on :

    Hi Sevin,

    I consulted with the uitable experts on this one and here’s what they told me:

    1) Currently, there is no way to set the alignment for each column. The alignment will be determined based on the data type, unless you set the column’s ColumnFormat property. We are working on allowing users to specify the alignment of a given column.

    2) There is no way to change the format for a cell (we do have an enhancement request for this).

    -Ken

  33. Arne replied on :

    Hi,

    i have created in GUIDE a table with the tag “uitable1″ and 4 additional editable fields for input values.

    1. In which location of the m-file i can renamed (or set a new variable/tag) for the uitable1 to “t1″?
    2. How can i adress the uitable “t1″ in the m-file and fill some fields with the results from the 4 fields? With a matrix A (2×2)?

    thx and greetz from germany

    Arne

  34. Mike replied on :

    Arne,

    1. With a GUIDE-generated gui the easiest way to rename (change the Tag) a control is with the Property Inspector in GUIDE. To do it from the MATLAB-file you have to export the GUI from guide to a single file (instead of a .fig and .m) and find where the uitable is created and change the tag from “uitable1″ to whatever you want it to be.

    2. With a GUIDE-created gui you can access the handle for any control from the handles object that is passed in to all the callbacks. For instance if your table tag is “uicontrol1″ then

    set(handles.uitable1,'Data',eye(2));

    will set the data for you. Let’s say you wanted to wanted to initialize your table, t1, with A when the GUI loads. Then in the gui_OpeningFcn you would use:

    set(handles.t1,'Data',A);
  35. Phillip replied on :

    Hi Ken or Mike,

    I have a user interface that uses a uitable to display messages to the user. Each time an event occurs it is logged in the uitable and shown to the user. What I am wondering is:

    Is there anyway to make the uitable stay “scrolled down” all the way?

    The reason I ask is as the number of events, the list, becomes big enough the uitable cannot show them all. That not a big deal, but since newest events are shown at the bottom of the uitable the user must scroll down to see them.

    Thanks for the help!

  36. Ken replied on :

    Hi Phillip,

    Unfortunately, programmatic scrolling of a uitable is not supported yet. I’ve created an enhancement request for this.

    -Ken

  37. Philippe replied on :

    Hi Ken and Mike

    Can you tell me if the feature you requested at point 10 is available in Release 2009b? Or is there another workaround rather then using html to set the color of a particular cell content?

    Thanks

  38. Ken replied on :

    Hi Philippe,

    It doesn’t look like the “change background color of cell in uitable” is going to make it in for R2009b, so you’ll have to continue using the HTML workaround for now.

    Sorry,
    -Ken

  39. Stephen replied on :

    Hi Ken and Mike,

    I am trying to create a finite element analysis program using matlab R2008a which uses a uitable for the user to input various numerical inputs for a simple structure.

    Having made the table in GUIDE I am struggling to retrieve the data to manipulate it in an m-file. Would you be able to advise the syntax for this.

    Many thanks,
    Stephen

  40. Louis Fernandes replied on :

    If I type in a cell, for example, 1.234567, then the cell displays (using the my default numeric format) only four decimal digits: 1.2346 . This is fine in order to have a clear display of the data. However, when I collect the data from the table, get(tablehandle,’data’), the collected value for the calculations is 1.2346, not the value 1.234567 that I entered. This adversely affects the precision of the calculations. Is there a way that the table keeps the whole number, but it only shows four decimal digits?. I want to avoid using “format long” because then the table gets too crowded.

    Thank you very much
    Louis

  41. X-Ray replied on :

    Hi Folks,

    I am using MATLAB R2008a to create a GUI in windowsXP. I have the same problem two of the users already commented. When I use the deployment tool to build a standalone application .exe program from the .m file, all uitables, no matter in subGUIs or mainGUI, will not display the data. the column and row numbers of those tables match exactly the data, but the cells are simply blank. The data is in the program, and I double checked by printing them in a static text box. Is it a bug of MATLAB?

  42. TT replied on :

    Does some of question solved in Matlab R2009a? Such as get or set data on cell level?

  43. matlabfinance replied on :

    Ken:

    What is the HTML workaround that you talked about for coloring idividual cell in uitable. Please let me know.

  44. Ken replied on :

    Hi matlabfinance,

    Right now, the only way to get the background color of a cell to change is to wrap your cell data (’foo’ in the case below) in HTML like this:

    x = {'<html><font bgcolor="yellow">foo</font></html>'}
    

    -Ken

  45. Daniel replied on :

    Is there any way to add a greek characted (Δ, ε, and so on) into the name of columns and/or rows? I have tried typing in latex commands but didnt work. I dont think theres a way to do this with matlab huh?

  46. Mike replied on :

    Daniel,

    You can use Ken’s aforementinoed html trick to insert unicode characters. For instance ‘ε’ is x03B5, so the cell data would be:

    ‘<html>&#x03B5;</html>’
  47. Daniel replied on :

    Hi Mike, hi Ken,

    thank you very much for your answer, was very helpful. I had no idea about this html workaround. Tried to find more information about it but didnt get much.

    Do you know if it is also possible to introduce subindices? In latex what im looking for would be something like ‘\Delta_{pb}’

    Thanks for your help,
    Daniel

  48. Daniel replied on :

    Hi Mike,

    sorry, i already found it!

    ‘Δpb’

    Thanks you!

  49. Yair Altman replied on :

    Daniel - the HTML workaround is undocumented. It relies on the (undocumented) fact that Matlab GUI is based on Java Swing, which is HTML-aware. Similarly, you can use HTML in tooltips, menu labels, listbox item etc.

    You can find more information/examples here: http://undocumentedmatlab.com/blog/html-support-in-matlab-uicomponents/ and here: http://undocumentedmatlab.com/blog/spicing-up-matlab-uicontrol-tooltips/

    Yair

  50. Malek replied on :

    I had the same problem.

    I used the -a in the mcc for the codetools. But the tables did not update whenever I filled it using data I got from a database Table. So I simply entered the data twice.

    set(handles.uitable2,’Data’,count_alarm)
    set(handles.uitable2,’Data’,count_alarm)

    and it worked! I hope it works for you guys

  51. Malek replied on :

    I am sorry for the previous post… It is still not working…
    :)

  52. adiel replied on :

    hi mike & ken.

    i’de like to know how can I use in the information that the user write in the table?
    and if I can chenge what he wrote from the program?

  53. Mike replied on :

    adiel,

    You can use the get and set methods on the ‘Data’ paramater of the uitable handle to read/write the data.

  54. salem replied on :

    i design a matlab program with user interface by using gui and i input the data from the user interface but i have problem to read the data from uitable
    fro example when i need to input data from fig to m file i use
    str2double(get(handles.edit11,’string’)); this to read data i input it through edit but when i need to read data from table what is the order that i write it in m file

  55. Phil replied on :

    I have the same problem as described above with UITable working fine in the Matlab environment but showing no data when compiled as an executable.
    The data is definately present in the table, as I select a line of the table and other fields change their contents to reflect the line of the table which has been selected. So the cells seem to have data in, but they appear empty.
    I have seen this problem posted several times but no solution. Is this a MATLAB bug which remains unsolved?

  56. Nelson replied on :

    I have a suggestion regarding column formatting:

    Support fprintf type format strings for numerics, such as ‘%.4g’.

    Thanks.

  57. Greg replied on :

    OK, count me in as another person who can not get the uitable to show data in a DEPLOYED application. Anyone have this working? Release 2008a

  58. Phil replied on :

    I still have not found a solution to the problem of the MATLAB table not showing data in an executable. However, there is a JAVA table object available which you can overlay over the MATLAB table and transfer data from the MATLAB table to the JAVA table every time the data in the table changes. This works very well. It is a shame that MATLAB have not fixed their own table object though.

  59. Phil replied on :

    Here’s the link to the java table download

    http://www.mathworks.com/matlabcentral/fileexchange/5752-guisheet-java-gui-table-from-matlab

  60. Jason replied on :

    in the old undocumented version of uitable there was a property under the table at: uitable.Table.setAutoResizeMode

    this caused the cells to spread to the width of the control, now the set(uitable,’columnwidth’,'auto’), is similar, but the outcome is different. is there a way to replicate the old setAutoResizeMode?

    Thanks
    Jason

  61. Patrick Tai replied on :

    Two questions on uitable in GUIDE: (ML 2008a/b)
    1. How to control the column width of the column of row-headers (not data cols)? The default width is too wide.
    2. If the column header is ‘A|B’, it is displayed as:
    A
    B
    in a two-lined column header.
    How do you display it as literally ‘A|B’? (A\|B fails)
    Thanks.

  62. Jean replied on :

    Hello, I am using the R2008a. I created a gui using GUIDE. I set the gui ‘Resize’ proportional, however the table in the gui has not changed when I change the size of gui. Do you guys have any suggestion on that?

    Thanks a lot!!

  63. Mike replied on :

    @Jason,
    That functionality is not available yet in the new version of uitable. Setting the columnWidth to auto allows MATLAB to choose the width of the column and does not affect the resize mode. If you can email me some more detail about how you were using the old undocumented resize property I can relay that to the developers for their planning of the next iteration.

    @Patrick and @Jean,
    I don’t know all the details of uitable and will get answers from its developers as soon as I am able. Thank you for your patience. If you need a quicker answer I suggest posting your question to the comp.soft-sys.matlab newsgroup (see the “Newsgroup” link at the top) or by contacting Technical support. Thanks for your questions and patience.

  64. Joanna replied on :

    @Greg and @Phil
    FYI, Starting R2008b, uitable could show data in a DEPLOYED application.

  65. sayyed hamed replied on :

    it was great for me as a beginner
    thank you.

  66. Mike replied on :

    @Jean,

    I have some follow-up questions that will help answer yours. What does it mean when you change the size of GUI: do you change the ‘position’ property or drag the figure?. You said the table in GUI has not changed, what do you expect to change, the size of table or table column?

  67. Paulius replied on :

    I can’t find an example for the best way to validate data newly-entered in a uitable cell. Is the below right, or is there a better option? (Aim: New cell value must be at least as large as the value in the fist cell of the previous row.)


    newdata = eventdata.NewData;
    if isempty(newdata)
    return
    end

    idx = eventdata.Indices;
    table = get(hObject,’Data’);
    if idx(1,1) > 1 && newdata < table(idx(1,1)-1,1)
    table(idx(1,1),idx(1,2)) = table(idx(1,1)-1,1);
    set(hObject,’Data’,table);
    end

    If this is right, it would be a useful example to include in the documentation!

  68. Mike replied on :

    @Paulius,

    I can’t say if your method is right without more context. However the CellEditCallback is the place to put validation logic for when the user edits the data in a table.

  69. Paulius replied on :

    Perhaps I should clarify my concern. My code takes a copy of the table data, changes it, then writes it back to the table. This seems an inefficient way of changing just one cell value, but it also seems the only way to do so. Is that right?

    A new question: I discovered that if I issue an error message (by modifying the String value of a text control), the table loses focus. The documentation says focus may be restored using uicontrol(hObject), but this doesn’t seem to work. If I use set(hObject,’Selected’,'on’) instead, focus is restored to the table but not the last edited cell. Am I missing something (is there another way?), or is this a limitation of the current implementation of the uitable control?

    Thanks in advance.

Leave a Reply

Wrap code fragments inside <pre> tags, like this:

<pre class="code">
a = magic(3);
sum(a)
</pre>

If you have a "<" character in your code, either follow it with a space or replace it with "&lt;" (including the semicolon).


Mike works on the MATLAB Desktop team.
  • Hooman Javidnia: This might not be directly relevant to the topic of the blog, but since we are talking about running...
  • Joe M.: Your description of the dock workaround includes Terminal commands, because Finder can’t see past...
  • Mike: @Chris, Thanks for the feedback. We made this post because we are aware of the limitations and pains, and we...
  • Chris: Issues like this may seem like small things, but in my opinion they keep Matlab from being a first-class...
  • Mike: @Amin, com.mathworks.* represent Java classes that we’ve built here. These mostly represent the libraries...
  • Mike: @OysterEngineer, I think the community here is pretty supportive. Your comments are always appreciated. Given...
  • Amin: Hi Mike what is the com.mathworks package? where i can read more about objects and classes of this package?
  • James Holland Jones: I’ve tried to add some emacs key bindings in the Keyboard Shortcuts Preferences pane and...
  • James Holland Jones: Flash forward to R2009b. What if you’re a Mac user and you actually *want* emacs key...
  • us: mike, nice blog however, you should also mention these two commands, which we put into our startup.m files…...

These postings are the author's and don't necessarily represent the opinions of The MathWorks.