将数组从matlab导入R

Posted

技术标签:

【中文标题】将数组从matlab导入R【英文标题】:Importing an array from matlab into R 【发布时间】:2012-07-25 04:36:51 【问题描述】:

我确信这是一个简单的问题,但我还没有找到明显的解决方案。我有一系列在 matlab 中生成的模型输出数组文件(dim 180、360、12),需要在 R 中打开。

我尝试使用 R.matlab 包,只需使用 readMat 命令,这会产生一个列表对象。尝试将此列表写入矩阵会导致内存分配错误。

我尝试过取消列出,但这也无济于事。

如何打开这些 matlab 矩阵文件并在 R 中写入矩阵?有什么想法吗?


目前读取的matlab代码很简单:

> data<-readMat("filename")
> typeof(data)
[1] "list"
> str(data)
List of 1
 $ pco2: num [1:180, 1:360, 1:12] NaN NaN NaN NaN NaN ...
 - attr(*, "header")=List of 3
 ..$ description: chr "MATLAB 5.0 MAT-file, Platform: GLNXA64, Created on: Thu Jul 26 10:36:42 2012 "
 ..$ version : chr "5"
 ..$ endian : chr "little

【问题讨论】:

请发布一个可重现的小示例,以便我们查看您的数据和错误。例如,在 Matlab 中,创建一个 dim 3,4,5 的矩阵。导入 R 并运行查询,例如 typeof(my_matrix) 道歉 - 我不是 Matlab 人(这无疑是我遇到问题的原因!) 到目前为止读取的 matlab 代码只是 data 如果您编辑您的问题并将 MATLAB 代码作为代码块包含在内(用回车后跟四个空格将其与文本分开),这将更容易阅读和解释。 看起来所有的值都是“NaN”,这意味着原始数据是垃圾或者存在翻译问题(可能是字节序)。 【参考方案1】:

请在 MATLAB 中仔细检查您的文件,并确保并非所有值都是 NaN。只需在 MATLAB 中加载文件并检查内容:

load file.mat

这是我刚刚做的一个简单测试:

MATLAB

>> x = rand(3,4,2)

x(:,:,1) =
      0.75127      0.69908      0.54722      0.25751
       0.2551       0.8909      0.13862      0.84072
      0.50596      0.95929      0.14929      0.25428
x(:,:,2) =
      0.81428      0.34998      0.61604      0.83083
      0.24352       0.1966      0.47329      0.58526
      0.92926      0.25108      0.35166      0.54972

>> save file.mat x

R

R> library(R.matlab)
R> data <- readMat('file.mat')
R> str(data)
List of 1
 $ x: num [1:3, 1:4, 1:2] 0.751 0.255 0.506 0.699 0.891 ...
 - attr(*, "header")=List of 3
  ..$ description: chr "MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: ..."
  ..$ version    : chr "5"
  ..$ endian     : chr "little"
R> data$x
, , 1

       [,1]   [,2]   [,3]   [,4]
[1,] 0.7513 0.6991 0.5472 0.2575
[2,] 0.2551 0.8909 0.1386 0.8407
[3,] 0.5060 0.9593 0.1493 0.2543

, , 2

       [,1]   [,2]   [,3]   [,4]
[1,] 0.8143 0.3500 0.6160 0.8308
[2,] 0.2435 0.1966 0.4733 0.5853
[3,] 0.9293 0.2511 0.3517 0.5497

【讨论】:

以上是关于将数组从matlab导入R的主要内容,如果未能解决你的问题,请参考以下文章

从Excel向MATLAB中导入数据出现了nan怎么处理

Matlab导入txt格式数据某几行如何进行

使用 RCall 将数据向量从 julia 导入到 R

如何把MATLAB中的数据读入到SIMULINK中

matlab导入并处理数据:xmltxtxlsx文件

matlab导入并处理数据:xmltxtxlsx文件