matlab中mat文件的操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中mat文件的操作相关的知识,希望对你有一定的参考价值。

我有M个N行一列的mat文件,我想把它们整合成N行M列的mat文件,请问下应该如何操作?
是M个 mat文件呀,不是M行N列……

参考技术A 1,最好用高版本的matlab(6.5的是不行的),建议用10版的或者更高的。
2,mat文件的读取可以直接利用load('文件名.mat')
3,在Curentfolder里面双击你要查看的mat文件结果就会在workspace显示,然后在workspace 里面双击某个变量就可以对其进行编辑。(workspace和Curentfolder可以这样打开单击菜单栏的Desktop--workspace,Desktop--Curentfolder)
4,利用save命令对你的mat文件进行保存,当然如果你是安3来修改的也就不用再使用save命令了。
参考技术B >> load C.mat
>> C

C =

-0.6515 -0.2727 -0.4354
-0.7534 -0.4567 -0.3212
-0.9264 -0.8173 -0.7823
-0.1735 -0.7373 -0.0972
-0.4765 -0.6773 -0.6574

>> D=C';
>> save D
>>本回答被提问者采纳

在 R 中使用 foreach 循环读取 MATLAB .mat 文件时出现问题

【中文标题】在 R 中使用 foreach 循环读取 MATLAB .mat 文件时出现问题【英文标题】:Problems reading MATLAB .mat files with a foreach loop in R 【发布时间】:2016-11-10 10:24:41 【问题描述】:

我有一千多个 matlab 文件要读入 R。我使用 R.matlab 包来读取它们,我想并行操作。

但是,一旦我调用循环(我从所有 .mat 文件生成单个数据集)我得到一个错误:

中的错误:任务 1 失败 - “不可能遇到函数 "readMat""

(我翻译了“”之间的错误部分,因为我的R不是英文的)

没有 foreach 命令,一切都很好,但时间太长了。这是代码

library(R.matlab)
library(plyr)
library(foreach)
library(doParallel)

a = list.files()
data <- readMat(a[1])

for(j in 2:length(a))  

  data1 <- readMat(a[j])

  if (is.null(data1)==FALSE) 
      data <- rbind.fill(data,data1)
  
  print(j)

使用 foreach 命令我得到了上述错误。代码如下:

    library(R.matlab)
    library(plyr)
    library(foreach)
    library(doParallel)


cl<-makeCluster(8)
registerDoParallel(cl)

    a = list.files()
    data <- readMat(a[1])

    foreach(j = 2:length(a)) %dopar% 

      data1 <- readMat(a[j])

      if (is.null(data1)==FALSE) 
          data <- rbind.fill(data,data1)
      
      print(j)
    

是不是说foreach和readMat不能一起用?

【问题讨论】:

您是否忘记关闭%dopar% 之前的第二组括号? ops,一个错字……但它在代码中被关闭了。 【参考方案1】:

如果有人想知道,我忘了将R.matlab 导出到每个集群节点。只需在foreach 调用中添加.packages 参数

library(R.matlab)
library(plyr)
library(foreach)
library(doParallel)


cl<-makeCluster(8)
registerDoParallel(cl)

a    <- list.files()
data <- readMat(a[1])

foreach(j = 2:length(a), .packages = c("plyr", "doParallel",
                                       "R.matlab")) %dopar% 

  data1 <- readMat(a[j])

  if (!is.null(data1)) 
      data <- rbind.fill(data,data1)
  


【讨论】:

你能用这个print(j)吗?当它在循环时?

以上是关于matlab中mat文件的操作的主要内容,如果未能解决你的问题,请参考以下文章

qt creator 中读写.mat文件

在 R 中使用 foreach 循环读取 MATLAB .mat 文件时出现问题

怎样将matlab中的.mat 文件转换为二进制文件,输入到c++程序中使用

Python读写mat文件(使用scipy.io)

Matlab练习——矩阵和数组的操作

matlab: 数据的读写