GETCOMPUTERNAME is a very simple but useful function to get your computer name, i.e. the hostname.
> mycomputer = getComputerName();
Manuel Marin (2019). Get computer name/hostname (https://www.mathworks.com/matlabcentral/fileexchange/16450-get-computer-name-hostname), MATLAB Central File Exchange. Retrieved .
Computer name and hostname are different on OSX (see scutils), and on certain Linux distros (don't know about Windows).
This function literally just calls "hostname" for you in the background, and uses COMPUTERNAME/HOSTNAME env-vars in case of failure. If you know your platform, that's a one-liner; and your code would probably be clearer if you did that yourself.
Fails on Mac and Linux despite ispc check.
I understand that for most people this function may be "trivial" but for someone who is new to Matlab this provided me a solution to a question I had. Manuel thank you for posting this. Also it's not like matlab is gonna run out of space.
Casper's suggestion should read,
[~, name] = system('hostname');
It works fine by the way.
Just this works fine.
[~, name] = system(hostname');
This is not worth a function.
@Ken Why is strtrim better? Are you having problems with whitespace at the beginning of your hostname string?
Many thanks to Manuel Marin for posting this information.
As an aside, things like this are only "trivial" to those who already know the answer.They are critical to those who are searching for answers.
A spark should never be put out. Rather, it should be fanned. Posters should be encouraged in their attempts to serve the community.
Maybe useful to put this at the end
hostname = hostname(hostname ~= 10);
to remove the newline character at the end of the string (on the one computer I've tested it on).
For future reference (with regards to MathMoose's suggestion), consider using strtrim where applicable instead of deblank.
Thanks. I had to strip a newline character from the end of the name string returned (on Windows 7), but this function was useful.
I added to the end of the file:
% remove trailing newline or null characters
name = deblank(name);
Marcelo and Jos, I for one find this a really useful function which saved my looking up the obscure (to me) functions used within it. This has saved me probably at least an hour of searching through help. So basically you can get lost.
Manuel do not delete the file, it's helped me, thank you!
I think it was usefull. I didn't know how to do it, now I do.
Absolutely no problem at all!
THANKS FOR THE CODE
If ret ~= 0, it means that command 'hostname' has not been found in the system. So, an alternative way, based on enviromental variables, is tried. On the other hand, 'name' always is set to a value, either by system() or by getenv.
This (indeed trivial) function will produce a misleading error ('Undefined function or variable "name".') if "ret", for whatever reason, equals zero. If ret is always non-zero, why check? And why convert it to lower case?
The help could be improved, by adding a H1, SEE ALSO lines.
Thanks for your comment but, from my point of view, if I have to rewrite 10 lines of code hundreds of times, independently of the difficulty, it worths to pack them into a function.
Manuel, you can't publish something as trivial as this:
[ret, name] = system('hostname');
if ret ~= 0,
name = getenv('COMPUTERNAME');
name = getenv('HOSTNAME');
name = lower(name);
I don't see how you can improve this because it is very trivial.
My suggestion is to delete it...
As suggested by some users, insignificant whitespaces are removed.