在R统计中读取高光谱图像的yaml矩阵的脚本

时间:2013-09-05 14:51:06

标签: r yaml

我之前没有使用带有R-stat的yaml文件输入。我有一个包含480个矩阵的xxxx.yaml文件,格式如下。每个矩阵是高光谱图像中的切片,其为190行X 291列。我看过R包'yaml',但无法弄清楚如何编写一个R脚本来将这些数据读入一个展开的矩阵,行数为139680,cols = 180。

%YAML:1.0
ImFrame0: !!opencv-matrix
   rows: 180
   cols: 291
   dt: f
   data: [ 1.53931296e+000, 5.05877912e-001, 2.08477139e+000, 1.61429548e+000, 1.71412516e+000, 1.29397893e+000,.....]
   ...   
   ...
   ...

ImFrame480: !!opencv-matrix
   rows: 180
   cols: 291
   dt: f
   data: [ 1.32225396e+000, 4.05347912e-001, 3.11177139e+000, 1.87459548e+000, 1.34523456e+000, .....]

1 个答案:

答案 0 :(得分:1)

假设data键是所有180x291数据矩阵的一维向量,并且要逐行填充,下面的代码应该是一个开始......我不是完全的确定你如何从480 180x291 matricies到单个139680x180矩阵...但是一旦你有一个已知形状的matricies列表,其余的应该遵循。

<强> YAML

ImFrame0: !!opencv-matrix
   rows: 3
   cols: 2
   dt: f
   data: [ 1.53931296e+000, 5.05877912e-001, 2.08477139e+000, 1.61429548e+000, 1.71412516e+000, 1.29397893e+000]
ImFrame480: !!opencv-matrix
   rows: 3
   cols: 2
   dt: f
   data: [ 1.32225396e+000, 4.05347912e-001, 3.11177139e+000, 1.87459548e+000, 1.34523456e+000, 4.05347912e-001]

R代码

library(yaml)

ll <- yaml.load_file('path/to/your.yaml')

from_yaml <- function(l) {
    matrix(l$data, nrow=l$rows, ncol=l$rows, byrow=TRUE)
}

list_of_mats <- lapply(ll, from_yaml)