File Exchange

image thumbnail

CPU Info

version (3.2 KB) by

Read various bits of information about the CPU and operating system.



View License

Editor's Note: This file was selected as MATLAB Central Pick of the Week

This function reads various bits of information about the CPU and operating
system, including:

* CPU name

* CPU clock speed

* CPU Cache size (L2)

* Number of physical CPU cores

* Operating system name & version

These are provided by /proc/cpu (Unix), sysctl (Mac) or WMIC (Windows).

Requires MATLAB R2010a or above.

Comments and Ratings (7)

Max Chandler

Great function! I've modified it for the machines I use which have multiple CPUs, where this only detects the first CPU.

Multi Socket motherboards in Linux can be added in the following way :

function info = parseCPUInfoText( txt )
% Now parse the fields
lookup = {
'model name', 'Name'
'cpu Mhz', 'Clock'
'cpu cores', 'NumCores'
'cache size', 'Cache'
'physical id', 'NumCPUs'};
info = struct( ...
'Name', {''}, ...
'Clock', {''}, ...
'Cache', {''} );
for ii=1:numel( txt )
if isempty( txt{ii} )
% Look for the colon that separates the property name from the value
colon = find( txt{ii}==':', 1, 'first' );
if isempty( colon ) || colon==1 || colon==length( txt{ii} )
fieldName = strtrim( txt{ii}(1:colon-1) );
fieldValue = strtrim( txt{ii}(colon+1:end) );
if isempty( fieldName ) || isempty( fieldValue )

% Is it one of the fields we're interested in?
idx = find( strcmpi( lookup(:,1), fieldName ) );
if ~isempty( idx )
newName = lookup{idx,2};
info.(newName) = fieldValue;

% Convert clock speed
info.Clock = [info.Clock, ' MHz'];

% Convert num cores
info.NumCores = str2double( info.NumCores );

% convert num cpus and figure out total core count
info.NumCPUs = str2num(info.NumCPUs) + 1;
info.TotalCores = info.NumCPUs * info.NumCores;


David (view profile)

Matthew Kelly

Matthew Kelly (view profile)

Nice Job!
This did exactly what I was looking for.


Ben Tordoff

Ben Tordoff (view profile)

Hi Daniel, I don't know much about CPU serial numbers, but from what I've read they don't exist in modern CPUs. See e.g.:

When I ask for the serial on my CPUs (on linux) I just get "none specified".

It might be possible to get the motherboard serial number, although I haven't managed to get it on Linux without sudo'ing (not a problem on Windows as far as I can tell).

What is it you want to achieve?

Cheers. Ben

Daniel Dolan

This function does exactly what it says it should. Is there a way to pull a serial number from the CPU?



Updated license


Fix for multi-socket Windows boxes.

MATLAB Release
MATLAB 7.10 (R2010a)

Inspired: detectOS

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video