You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB中使用fplot绘制Excel文件中的数据?

从Excel绘制机器数据图表的问题与修正

需求说明

读取Excel文件的Sheet2工作表,表中每列对应一台机器:

  • 首行是机器名称(列标题)
  • 首行下方为该机器的每日数值数据
  • 为每列数据生成独立图表,图表标题使用对应机器名称
  • 不使用高级函数

原代码问题分析

  1. 机器名称丢失:xlsread默认只返回数值数据,首行的文本名称会被转为NaN,无法获取标题文本
  2. 数据存储逻辑错误:嵌套循环中重复给tempVar{n}和tempName{i}赋值,导致数据覆盖且未正确存储名称
  3. 绘图函数误用:fplot用于绘制函数曲线,不适合绘制离散的每日数据,应使用plot
  4. 冗余操作:嵌套循环处理NaN效率低,可直接向量化替换
  5. 图表创建顺序错误:先绘图再创建新figure,导致最后一个图表无内容

修正后的代码

clear variables
clc
close all

% 读取Excel原始数据(保留文本和数值)
[~, ~, rawData] = xlsread('machineOutput.xlsx', 'Sheet2');
[rows, cols] = size(rawData);

% 遍历每一列(每台机器)
for c = 1:cols
    % 获取当前机器名称(首行对应列)
    machineName = rawData{1, c};
    
    % 获取该机器的数值数据(从第2行开始)
    machineData = cell2mat(rawData(2:rows, c));
    
    % 将NaN替换为0
    machineData(isnan(machineData)) = 0;
    
    % 创建新图表
    figure
    % 绘制数据:x轴为天数(从1到数据长度),y轴为机器数值
    plot(machineData, '-o')
    % 设置图表标题为机器名称
    title(machineName)
    grid on
    xlabel('Number of Days')
    ylabel('Machine Value')
    xlim tight
end

代码说明

  • 使用xlsread的第三个输出rawData保留所有原始数据,直接提取首行的机器名称
  • 用cell2mat将单元格数据转为数值数组,方便处理
  • 向量化替换NaN为0,避免嵌套循环
  • 使用plot绘制离散数据,添加-o标记更清晰展示每日数据点
  • 先创建figure再绘图,确保每个图表独立且有内容

内容的提问来源于stack exchange,提问作者NegativeZero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:30:42