如何在R中使用Matlab数据?

发布于 2024-10-04 19:32:05 字数 206 浏览 2 评论 0原文

我在 Matlab 中有一个 4 维矩阵。我想导出这个矩阵以在 R 中使用它(我想用它来绘图)。对我来说,问题是我不知道如何导出 R 可以使用的矩阵,而且我也不知道如何在 R 中导入数据。基本上,我尝试做的就是导出我的使用 dlmwrite 在 Matlab 中导入矩阵,并使用 read.table() 将其导入到 R 中。不幸的是这不起作用。

Well I have a matrix in Matlab, with 4 dimensions. I'd like to export this matrix to use it in R (I want to plot with it). The problem for me is that I don't know how to export a matrix that can be used by R, and also I don't know how to import data in R. Basically, what I've tried to do is to export my matrix in Matlab using dlmwrite, and importing it in R using read.table(). Unfortunately this isn't working.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七色彩虹 2024-10-11 19:32:05

您可以使用 fwrite 将任何数组写入二进制文件,并使用 readBin 将其读入 R。在 R 中,这将给出一个向量,您可以使用 array() 或 matrix() 将其推入形状。

这是一个非常简单的例子。

a = magic(4)

con = fopen('a.bin', 'w');
fwrite(con, a * 0.01, 'float64')
fclose(con)

a * 0.01

ans =

0.1600 0.0200 0.0300 0.1300 0.0500

0.1100 0.1000

0.0800 0.0900 0.0700 0.0600

0.1200 0.0400 0.1400 0.1500 0.0100

现在在 R 中:

 matrix(readBin("a.bin", "double", 16), 4)

[,2] [,3] [,4]

[1,] 0.16 0.02 0.03 0.13

[2,] 0.05 0.11 0.10 0.08

[3,] 0.09 0.07 0.06 0.12

[4,] 0.04 0.14 0.15 0.01

您可以用 4D 数组替换“a”,并将 R 代码更改为此,它应该同样有效:

## assume 4 dimensions with particular sizes
dims <- c(10, 5, 2, 3)
a <- array(readBin("a.bin", "double", prod(dims)), dims)

最后,请注意这假设 Matlab 和 R 中的字节顺序相同。如果您的终端系统不同,请参阅 Matlab fwrite 帮助中的机器格式。

You can write out any array to binary with fwrite, and read it into R with readBin. In R that will give a vector that you can push into shape with array() or matrix().

Here's a very simple example.

a = magic(4)

con = fopen('a.bin', 'w');
fwrite(con, a * 0.01, 'float64')
fclose(con)

a * 0.01

ans =

0.1600 0.0200 0.0300 0.1300

0.0500 0.1100 0.1000 0.0800

0.0900 0.0700 0.0600 0.1200

0.0400 0.1400 0.1500 0.0100

Now in R:

 matrix(readBin("a.bin", "double", 16), 4)

[,1] [,2] [,3] [,4]

[1,] 0.16 0.02 0.03 0.13

[2,] 0.05 0.11 0.10 0.08

[3,] 0.09 0.07 0.06 0.12

[4,] 0.04 0.14 0.15 0.01

You could replace "a" with a 4D array, and change the R code to this and it should work just as well:

## assume 4 dimensions with particular sizes
dims <- c(10, 5, 2, 3)
a <- array(readBin("a.bin", "double", prod(dims)), dims)

Finally, note that this assumes the same byte ordering in Matlab and R. See machineformat in the Matlab fwrite help if your end systems are different.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文