您的位置 : 资讯 > 软件资讯 > Matlab实现采集电脑的CPU等硬件信息

Matlab实现采集电脑的CPU等硬件信息

来源:菜鸟下载 | 更新时间:2025-04-26

不多废话,直接展示代码代码语言:javascript代码运行次数:0运行复制```javascriptfunction in

matlab实现采集电脑的cpu等硬件信息

不多废话,直接展示代码

代码语言:javascript代码运行次数:0运行复制```javascriptfunction info = cpuinfo()% CPU数据采集% 信息 = CPUINFO()返回一个包含不同字段的结构% 中央处理器和操作系统信息由/proc/cpuinfo(Unix)、% sysctl(Mac)或WMIC(Windows)提供。% CPU名称% CPU的时钟频率% CPU缓存大小(L2)% 物理CPU核心数% * 操作系统名称和版本%% 参见: computer, isunix, ismac

if isunix % 判断是否为UNIX系统if ismac % 判断是否为Mac系统info = cpuInfoMac();elseinfo = cpuInfoUnix();endelseinfo = cpuInfoWindows();end

%-------------------------------------------------------------------------function info = cpuInfoWindows()sysInfo = callWMIC('cpu');osInfo = callWMIC('os');info = struct( ...'Name', sysInfo.Name, ...'Clock', [sysInfo.MaxClockSpeed, ' MHz'], ...'Cache', [sysInfo.L2CacheSize, ' KB'], ...'NumProcessors', str2double(sysInfo.NumberOfCores), ...'OSType', 'Windows', ...'OSVersion', osInfo.Caption); % 输出结构

%-------------------------------------------------------------------------function info = callWMIC(alias)% 调用Windows管理命令行WMIColddir = pwd(); % 保存当前目录cd(tempdir); % 切换到临时目录sysinfo = evalc(sprintf('!wmic %s get /value', alias)); % 执行WMIC命令cd(olddir); % 切换回原目录fields = textscan(sysinfo, '%s', 'Delimiter', '\n');fields = fields{1}; % 处理数据fields(cellfun('isempty', fields)) = []; % 去除空行values = cell(size(fields));for ff = 1:numel(fields)idx = find(fields{ff} == '=', 1, 'first'); % 查找等号if ~isempty(idx) && idx > 1values{ff} = strtrim(fields{ff}(idx+1:end)); % 提取值fields{ff} = strtrim(fields{ff}(1:idx-1)); % 提取字段名endend% 删除任何重复项(仅适用于双插槽电脑,我们假设所有插槽有相同的处理器)。numResults = sum(strcmpi(fields, fields{1}));if numResults > 1% 计算核心数numCoresEntries = find(strcmpi(fields, 'NumberOfCores'));if ~isempty(numCoresEntries)cores = cellfun(@str2double, values(numCoresEntries));values(numCoresEntries) = {num2str(sum(cores))};end% 去除重复结果[fields, idx] = unique(fields, 'first');values = values(idx);end% 数据转换info = cell2struct(values, fields);

%-------------------------------------------------------------------------function info = cpuInfoMac()% Mac系统与Windows类似machdep = callSysCtl('machdep.cpu');hw = callSysCtl('hw');info = struct( ...'Name', machdep.brand_string, ...'Clock', [num2str(str2double(hw.cpufrequency_max)/1e6), ' MHz'], ...'Cache', [machdep.cache.size, ' KB'], ...'NumProcessors', str2double(machdep.core_count), ...'OSType', 'Mac OS/X', ...'OSVersion', getOSXVersion());

%-------------------------------------------------------------------------function info = callSysCtl(namespace)infostr = evalc(sprintf('!sysctl -a %s', namespace));% 移除前缀infostr = strrep(infostr, [namespace, '.'], '');% 现在转换为结构infostr = textscan(infostr, '%s', 'delimiter', '\n');infostr = infostr{1};info = struct();for ii = 1:numel(infostr)colonIdx = find(infostr{ii} == ':', 1, 'first');if isempty(colonIdx) || colonIdx == 1 || colonIdx == length(infostr{ii})continueendprefix = infostr{ii}(1:colonIdx-1);value = strtrim(infostr{ii}(colonIdx+1:end));while ismember('.', prefix)dotIndex = find(prefix == '.', 1, 'last');suffix = prefix(dotIndex+1:end);prefix = prefix(1:dotIndex-1);value = struct(suffix, value);endinfo.(prefix) = value;end

%-------------------------------------------------------------------------function vernum = getOSXVersion()% 提取操作系统版本号ver = evalc('system(''sw_vers'')');vernum = regexp(ver, 'ProductVersion:\s([1234567890.]*)', 'tokens', 'once');vernum = strtrim(vernum{1});

%-------------------------------------------------------------------------function info = cpuInfoUnix()txt = readCPUInfo();cpuinfo = parseCPUInfoText(txt);txt = readOSInfo();osinfo = parseOSInfoText(txt);% 合并结构info = cell2struct([struct2cell(cpuinfo); struct2cell(osinfo)], ...[fieldnames(cpuinfo); fieldnames(osinfo)]);

%-------------------------------------------------------------------------function info = parseCPUInfoText(txt)% 解析字段lookup = { ...'model name', 'Name' ...'cpu Mhz', 'Clock' ...'cpu cores', 'NumProcessors' ...'cache size', 'Cache' ...};info = struct( ...'Name', {''}, ...'Clock', {''}, ...'Cache', {''} );for ii = 1:numel(txt)if isempty(txt{ii})continue;end% 查找分隔属性名和值的冒号colon = find(txt{ii} == ':', 1, 'first');if isempty(colon) || colon == 1 || colon == length(txt{ii})continue;endfieldName = strtrim(txt{ii}(1:colon-1));fieldValue = strtrim(txt{ii}(colon+1:end));if isempty(fieldName) || isempty(fieldValue)continue;end% 是否为我们感兴趣的字段之一?idx = find(strcmpi(lookup(:,1), fieldName));if ~isempty(idx)newName = lookup{idx,2};info.(newName) = fieldValue;endend% 转换时钟速度info.Clock = [info.Clock, ' MHz'];% 转换核心数info.NumProcessors = str2double(info.NumProcessors);

%-------------------------------------------------------------------------function info = parseOSInfoText(txt)info = struct( ...'OSType', 'Linux', ...'OSVersion', '');% 查找字符串"linux version"然后查找括号内的内容[~, b] = regexp(txt, '[^(](([^)])).*', 'match', 'tokens', 'once');info.OSVersion = b{1}{1};

%-------------------------------------------------------------------------function txt = readCPUInfo()fid = fopen('/proc/cpuinfo', 'rt');if fid

输出结果如下

代码语言:javascript代码运行次数:0http://www.w3.org/2000/svg"> d="M6.66666 10.9999L10.6667 7.99992L6.66666 4.99992V10.9999ZM7.99999 1.33325C4.31999 1.33325 1.33333 4.31992 1.33333 7.99992C1.33333 11.6799 4.31999 14.6666 7.99999 14.6666C11.68 14.6666 14.6667 11.6799 14.6667 7.99992C14.6667 4.31992 11.68 1.33325 7.99999 1.33325ZM7.99999 13.3333C5.05999 13.3333 2.66666 10.9399 2.66666 7.99992C2.66666 5.05992 5.05999 2.66659 7.99999 2.66659C10.94 2.66659 13.3333 5.05992 13.3333 7.99992C13.3333 10.9399 10.94 13.3333 7.99999 13.3333Z" fill="currentcolor">运行http://www.w3.org/2000/svg"> clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd">复制```javascript>> info = cpuinfo()info = 包含以下字段的 struct:Name: '12th Gen Intel(R) Core(TM) i5-12500H'Clock: '2500 MHz'Cache: '9216 KB'NumProcessors: 12OSType: 'Windows'OSVersion: 'Microsoft Windows 11 家庭中文版'

登录后复制

菜鸟下载发布此文仅为传递信息,不代表菜鸟下载认同其观点或证实其描述。

展开
win10模拟器中文版
win10模拟器中文版
类型:休闲益智 运营状态:公测 语言:简体中文
模拟
前往下载

相关文章

更多>>

热门游戏

更多>>

手机扫描此二维码,

在手机上查看此页面

关于本站 下载帮助 版权声明 网站地图

版权投诉请发邮件到 cn486com#outlook.com (把#改成@),我们会尽快处理

Copyright © 2019-2020 菜鸟下载(www.cn486.com).All Reserved | 备案号:湘ICP备2022003375号-1

本站资源均收集整理于互联网,其著作权归原作者所有,如有侵犯你的版权,请来信告知,我们将及时下架删除相应资源