2

我以前没有使用带有 R-stat 的 yaml 文件输入。我有一个 xxxx.yaml 文件,其中包含以下格式的 480 个矩阵。每个矩阵都是 190 行 X 291 列的高光谱图像中的一个切片。我查看了 R 包'yaml',但不知道如何编写 R 脚本将这些数据读入行 = 139680,列 = 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, .....]
4

1 回答 1

1

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

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]

代码

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)
于 2013-09-05T15:42:01.060 回答