MATLAB 作为一款专业的科学计算软件,凭借强大的数据处理函数库、直观的可视化工具和便捷的编程环境,成为数据分析领域的常用工具。无论是学术研究中的数据挖掘,还是工业场景下的趋势分析,MATLAB 都能高效完成任务。下面从基础操作到实战应用,带你掌握 MATLAB 数据分析的核心流程。

一、数据导入:将外部数据接入 MATLAB

数据分析的第一步是获取数据,MATLAB 支持多种格式数据的导入,满足不同场景需求:

  1. Excel/CSV 文件导入
  • 图形化操作:打开 MATLAB 后,点击左侧 “当前文件夹” 面板,找到目标 Excel(.xlsx)或 CSV(.csv)文件,双击文件,在弹出的 “导入工具” 窗口中,勾选需要导入的数据列,选择导入方式(如 “导入所选内容”“生成脚本” 等),点击 “导入数据”,数据会自动存储为变量(如 Excel 中的 Sheet1 数据会生成Sheet1变量)。

  • 命令行操作:若需通过代码批量导入,使用readtable函数,例如导入 “data.xlsx” 文件的 Sheet1 数据,输入命令:data = readtable('data.xlsx', 'Sheet', 'Sheet1');,数据会以表格(table)形式存储,方便后续操作。

  1. 文本文件(.txt)导入
  • 对于结构化文本数据(如每行数据用空格 / 逗号分隔),使用importdata函数,例如:data = importdata('data.txt');,函数会自动识别数据格式,生成包含数据和表头的结构体。

  • 若文本格式复杂,可使用fopen+fscanf组合,先打开文件:fid = fopen('data.txt', 'r');,再按指定格式读取:data = fscanf(fid, '%d %f', [2, inf]);(表示按 “整数 + 浮点数” 格式读取,每行 2 个数据,读取所有行),最后关闭文件:fclose(fid);

  1. 数据库数据导入
  • 若数据存储在 MySQL、SQL Server 等数据库中,需先安装对应数据库的驱动(在 MATLAB “附加功能” 中搜索 “Database Toolbox” 并安装),然后通过 “数据库资源管理器” 建立连接:点击 APPs 面板中的 “Database Explorer”,新建连接,选择数据库类型,输入服务器地址、用户名、密码和数据库名称,测试连接成功后,即可浏览数据库表并导入数据。

二、数据预处理:提升数据质量

原始数据常存在缺失值、异常值等问题,需先预处理确保分析准确性:

  1. 缺失值处理
  • 检测缺失值:使用isnan函数(针对数值型数据),例如missing = isnan(data);,返回与data同维度的逻辑矩阵,true表示对应位置为缺失值;若数据是表格形式,用is missing函数:missing = ismissing(data);

  • 处理缺失值:根据数据特点选择方法,删除缺失值用data_clean = rmmissing(data);(删除含缺失值的行);填充缺失值用data_fill = fillmissing(data, 'constant', 0);(用 0 填充),或data_fill = fillmissing(data, 'linear');(线性插值填充,适合时序数据)。

  1. 异常值检测与处理
  • 常用 “3σ 原则”(适用于正态分布数据):先计算数据均值mu = mean(data, 'omitnan');omitnan表示忽略缺失值)和标准差sigma = std(data, 'omitnan');,再筛选异常值:outlier = (data < mu - 3*sigma) | (data > mu + 3*sigma);,最后处理异常值,可替换为均值:data(outlier) = mu;,或删除异常值所在行:data_clean = data(~outlier, :);

  • 可视化检测:通过箱线图直观识别异常值,输入boxplot(data);,图中超出上下须的点即为异常值,便于快速定位。

  1. 数据标准化 / 归一化
  • 标准化(均值为 0,标准差为 1):使用zscore函数,data_norm = zscore(data, 'omitnan');,适合消除量纲影响,如比较不同单位的指标(身高 cm 与体重 kg)。

  • 归一化(数据映射到 [0,1] 区间):用mapminmax函数,[data_norm, ps] = mapminmax(data, 0, 1);ps存储映射参数,后续新数据可通过mapminmax('apply', new_data, ps)进行相同归一化。

三、核心分析:提取数据价值

预处理完成后,进入数据分析核心环节,MATLAB 提供丰富函数实现各类分析需求:

  1. 描述性统计分析
  • 基础统计量:用summary函数查看表格数据的统计摘要,summary(data);会显示各列数据的均值、中位数、最小值、最大值等;若为数值矩阵,用stat = [mean(data, 'omitnan'); median(data, 'omitnan'); std(data, 'omitnan'); min(data, [], 'omitnan'); max(data, [], 'omitnan')];,手动计算均值、中位数等并存储。

  • 相关性分析:分析变量间关联程度,用corrcoef函数计算相关系数矩阵,corr_matrix = corrcoef(data, 'Rows', 'complete');Rows='complete'表示删除含缺失值的行),相关系数接近 1 或 - 1 表示强相关,接近 0 表示弱相关;用heatmap(corr_matrix, 'Colormap', parula);绘制热力图,更直观展示相关性。

  1. 趋势分析与预测
  • 时序数据趋势:对于按时间排序的数据,用polyfit拟合趋势线,例如对时序数据x(时间)和y(指标值),拟合一次线性趋势:p = polyfit(x, y, 1);1表示一次多项式),y_fit = polyval(p, x);计算拟合值,再用plot(x, y, 'o', x, y_fit, '-r');绘制原始数据点和趋势线,判断数据上升 / 下降趋势。

  • 简单预测:基于线性拟合结果,预测未来值,例如预测x_new对应的y_newy_new = polyval(p, x_new);;若数据有周期性,可使用fft进行傅里叶变换分析周期,Y = fft(y);计算频谱,f = (0:length(Y)-1)*(1/T);T为采样周期),plot(f, abs(Y));查看频谱图,找到主要周期后进行周期性预测。

  1. 聚类分析
  • 对无标签数据进行分类,用kmeans函数实现 K 均值聚类,例如对数据矩阵data(每行一个样本,每列一个特征),分成 3 类:[idx, C] = kmeans(data, 3);idx为每个样本的类别标签,C为聚类中心;用scatter(data(:,1), data(:,2), 10, idx, 'filled');绘制散点图,不同颜色表示不同类别,直观展示聚类结果。

四、数据可视化:让结果更直观

MATLAB 的可视化功能强大,能将分析结果转化为清晰图表,常用图表类型如下:

  1. 基础图表
  • 折线图:展示数据变化趋势,plot(x, y1, '-b', x, y2, '--r');-b表示蓝色实线,--r表示红色虚线,可添加图例legend('数据1', '数据2');和标题title('数据趋势图');

  • 柱状图:比较不同类别数据,bar(categories, values);,例如bar(['A类','B类','C类'], [10,25,18]);,设置颜色bar(..., 'FaceColor', [0.2,0.6,0.8]);

  • 直方图:展示数据分布,histogram(data, 'BinWidth', 5);BinWidth=5表示组距为 5),添加拟合曲线hold on; fplot(@(x) normpdf(x, mu, sigma)*length(data)*5, [min(data), max(data)], 'r'); hold off;,对比实际分布与正态分布。

  1. 高级图表
  • 三维图:展示多变量关系,scatter3(data(:,1), data(:,2), data(:,3), 20, idx, 'filled');,绘制三维散点图,用颜色区分聚类类别;或meshgrid+mesh绘制曲面图,[X,Y] = meshgrid(1:10, 1:10); Z = X.^2 + Y.^2; mesh(X,Y,Z);,展示函数曲面。

  • 动态图:若需展示数据变化过程,用animatedline,例如h = animatedline; xlabel('时间'); ylabel('数值'); for t = 1:100 y = sin(t/10); addpoints(h, t, y); drawnow; pause(0.1); end,实时绘制正弦曲线变化。

五、实战案例:MATLAB 数据分析完整流程

以 “某商品月度销量数据分析” 为例,演示完整流程:

  1. 数据导入:导入 “sales_data.xlsx”,包含 “月份”(1-12)和 “销量” 两列,命令:data = readtable('sales_data.xlsx');

  2. 预处理:检测缺失值ismissing(data),无缺失值;检测异常值,用boxplot(data.销量);,发现 12 月销量为异常高值,用均值替换:mu_sales = mean(data.销量, 'omitnan'); outlier = data.销量 > mu_sales + 3*std(data.销量, 'omitnan'); data.销量(outlier) = mu_sales;

  3. 分析:计算销量均值mu = mean(data.销量)、增长率(每月销量与上月差值除以上月销量)growth_rate = diff(data.销量)./data.销量(1:end-1);;用polyfit(data.月份, data.销量, 1)拟合趋势线,得p = [200, 500],说明每月销量平均增长 200。

  4. 可视化:绘制销量趋势图plot(data.月份, data.销量, 'o-', 'LineWidth', 1.5); hold on; plot(data.月份, polyval(p, data.月份), '--r', 'LineWidth', 1); xlabel('月份'); ylabel('销量'); title('商品月度销量趋势'); legend('实际销量', '趋势线'); hold off;,清晰展示销量上升趋势。

通过以上步骤,你已掌握 MATLAB 数据分析的基础能力。实际应用中,可根据需求调用更多专业工具箱(如 “Statistics and Machine Learning Toolbox” 用于机器学习分析),进一步拓展分析深度。遇到问题时,可通过 MATLAB 帮助文档(输入doc 函数名查看详细用法)或官方社区获取支持。

(注:文档部分内容可能由 AI 生成)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐