Skip to Main Content Skip to Search
Login
File Exchange
MATLAB Newsgroup
Link Exchange
  Blogs  
 Contest 
MathWorks.com

Thread Subject: Changing preferences from command line

Subject: Changing preferences from command line

From: First Name Last Name

Date: 15 Aug, 2007 18:49:22

Message: 1 of 5

any way to change/view particular preferences via command
line? Such as multithreading support on/off in R2007a?

Thanks ....

Subject: Changing preferences from command line

From: Titus

Date: 17 Aug, 2007 11:35:22

Message: 2 of 5


"First Name Last Name" <nospam@nospamplease.com> schrieb im Newsbeitrag
news:f9vhri$orl$1@fred.mathworks.com...
> any way to change/view particular preferences via command
> line? Such as multithreading support on/off in R2007a?
>
> Thanks ....

Hi,
for the multithreading: there are (undocumented) functions called
getNumberOfComputationalThreads and setNumberOfComputationalThreads, take a
look at the demo:
>> edit multithreadedcomputations

For other preferences: probably Yair could come up with some java call, I
don't know of some "official" way...

Titus


Subject: Changing preferences from command line

From: Yair Altman

Date: 17 Aug, 2007 13:43:18

Message: 3 of 5

"Titus" <titus.edelhofer@mathworks.de> wrote in message
<fa415r$kk8$1@fred.mathworks.com>...
> For other preferences: probably Yair could come up with
some > java call, I don't know of some "official" way...


Thanks for the compliment - I couldn't resist the challenge...

* The preferences are stored in the matlab.prf text file
that's stored in the user's Matlab preferences folder
(prefdir is a built-in Matlab function):

edit(fullfile(prefdir,'matlab.prf'));

Each preference appears to be on a separate line in the
following format: <pref-name>=<pref-type><pref-value>

<pref-type> appears to be one of these:
  - 'B' => boolean/logical flag
  - 'C' => color (RGB numeric value)
  - 'F' => font (type,size,name)
  - 'I' => int16
  - 'J' => int32
  - 'R' => rectangular area
  - 'S' => string/char

examples:
  EditorShowLineNumbers=Btrue
  EditorMaxCommentWidth=I120

* You can read the preference names from this matlab.prf
file and then use the following (you-guessed-it) java calls
to get/set the values:
  - com.mathworks.services.Prefs.get<type>Pref(<pref-name>)
  -
com.mathworks.services.Prefs.set<type>Pref(<pref-name>,newValue);

<type>: one of Boolean, Color, RGBColor, Font, Integer,
Rectangle, String, Double (I believe Doubles get converted
to int32 - possibly a bitwise casting since both use 32 bits)

For example:
com.mathworks.services.Prefs.getBooleanPref('LayoutSnapToGrid')
com.mathworks.services.Prefs.getIntegerPref('GeneralNumComputationalThreads')

adding a second argument to get<type>Pref() appears to
indicate a default value that is returned if <pref-name> is
invalid:
com.mathworks.services.Prefs.getIntegerPref('xxxx',123)
=> 123

* STRONG WARNING: all this relies on a lot of guesswork,
trial-&-error and some common sense. It's absolutely
undocumented, unsupported and discouraged by MathWorks.
You're pretty safe as long as you stick to read-only mode.
But if you try modifying system values this way, well it
might blow in your face if you try it at home or on a system
even slightly different than the one I have (WinXP, 2007a).
Don't come crying if your Matlab prefs get all screwed up...

Yair Altman
http://ymasoftware.com

Subject: Changing preferences from command line

From: Yair Altman

Date: 17 Aug, 2007 13:53:35

Message: 4 of 5

> <pref-type> appears to be one of these:
> - 'J' => int32
>
com.mathworks.services.Prefs.set<type>Pref(<pref-name>,newValue);
> <type>: one of Boolean, Color, RGBColor, Font, Integer,
> Rectangle, String, Double (I believe Doubles get converted
> to int32 - possibly a bitwise casting since both use 32 bits)

Small correction: doubles get stored in 8 bytes (=64 bits)
so either the 'J' <pref-type> is actually an int64 (not
int32), or some other conversion takes place for doubles
that I am not aware of.

Yair Altman
http://ymasoftware.com

Subject: Changing preferences from command line

From: Ben Steiner

Date: 14 Aug, 2008 02:03:02

Message: 5 of 5

Yair
Many, many thanks for this clear & concise explanation. It
was exactly what I was looking for. Im running two instances
of Matlab and using it to set a different background color
in each. Using these java calls on the preferences has got
me tantalisingly close to a solution ... maybe I could ask
your expert advice to get to completion?

This is the code im using:
% dont use system color
com.mathworks.services.Prefs.setBooleanPref('ColorsUseSystem',0);
% use specified color
com.mathworks.services.Prefs.setColorPref('ColorsBackground',<whatever>)

where <whatever> is a java.awt.Color object returned by
com.mathworks.services.Prefs.getColorPref('ColorsBackground')

My problem now is that the new color (or preference) does
not take effect on the desktop immediately. Instead, it
comes into effect either after a restart of Matlab or if I
open the Preferences dialog manually and then push 'Apply'.

So a quick 'n dirty solution is to use:

preferences('Colors') this opens the dialog box and then
requires the user to push 'ok' or 'Apply'. It gets the job
done, but not as elegantly as I would like.

I would like to either
1) Call the code behind the Apply button in the Preferences
dialog; or
2) Force matlab to pick up the new preferences as it would
at startup; or
3) 'refresh' the desktop

If anyone can shed light on any of these approaches I would
be most grateful. Im using R2007b,
many thanks
Ben

ps: For anyone else that's playing with this: I dont advise
trying to edit the matlab.prf via matlab(!). I created a
situation that made Matlab unworkable. I did find that
deleting the matlab.prf completely (in frustration) solved it.

Tags for this Thread

Everyone's Tags:

Add a New Tag:

Separated by commas
Ex.: root locus, bode

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Tag Activity for This Thread
Tag Applied By Date/Time
undocumented Yair Altman 17 Aug, 2007 08:11:37
multithreading First Last 15 Aug, 2007 14:50:19
command line First Last 15 Aug, 2007 14:50:19
preferences First Last 15 Aug, 2007 14:50:19
rssFeed for this Thread

envelope graphic E-mail this page to a colleague

Public Submission Policy
NOTICE: Any content you submit to MATLAB Central, including personal information, is not subject to the protections which may be afforded information collected under other sections of The MathWorks, Inc. Web site. You are entirely responsible for all content that you upload, post, e-mail, transmit or otherwise make available via MATLAB Central. The MathWorks does not control the content posted by visitors to MATLAB Central and, does not guarantee the accuracy, integrity, or quality of such content. Under no circumstances will The MathWorks be liable in any way for any content not authored by The MathWorks, or any loss or damage of any kind incurred as a result of the use of any content posted, e-mailed, transmitted or otherwise made available via MATLAB Central. Read the complete Disclaimer prior to use.
Related Topics