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

如何使用R提取MATLAB .fig文件中的数据?

在R中提取MATLAB .fig文件数据的解决方案

一、使用R.matlab包解析.fig文件

.fig文件本质是MATLAB的.mat格式文件,存储了图形对象的层级结构,通过R.matlab包加载后,需要逐层定位数据:

  1. 安装并加载依赖包
install.packages("R.matlab")
library(R.matlab)
  1. 加载.fig文件
fig_data <- readMat("your_target.fig")
  1. 逐层解析数据结构
    .fig文件的核心数据通常嵌套在hgS_xxxxxx(不同MATLAB版本后缀可能不同,比如hgS_070000)对象中,需要用str()查看层级:
# 查看顶层结构,限制显示层级避免输出过多
str(fig_data, max.level = 2)

以常见的折线图为例,提取X/Y数据的代码示例:

# 定位到图形根对象
fig_root <- fig_data$hgS_070000

# 获取坐标轴对象(通常是根对象的第一个子元素)
axes_obj <- fig_root$children[[1]]

# 获取线条对象(坐标轴的子元素)
line_obj <- axes_obj$children[[1]]

# 提取X和Y数据
x_values <- line_obj$properties$XData[[1]]
y_values <- line_obj$properties$YData[[1]]

# 输出数据
cat("X数据:\n")
print(x_values)
cat("\nY数据:\n")
print(y_values)

注意:不同类型的图形(柱状图、散点图等)或MATLAB版本,数据的嵌套路径可能不同,需要通过str()逐层排查定位。

二、无MATLAB许可证时获取可用的.fig文件

如果无法直接生成.fig文件,可以通过以下方式获取:

  • GitHub搜索现代.fig文件:搜索关键词「MATLAB fig file」,选择近3-5年的开源项目,这类文件版本较新,能被R.matlab正常加载。
  • 用Octave生成:Octave是开源的MATLAB替代工具,可免费生成.fig文件:
    1. 安装Octave(官网或包管理器均可)
    2. 运行以下Octave代码生成并保存图形:
    x = linspace(0, 2*pi, 100);
    y = sin(x);
    plot(x, y);
    saveas(gcf, "test.fig");
    
    生成的test.fig可直接用R.matlab加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:52:45