通过行而不是列将矩阵写到文本文件

时间:2018-11-22 12:47:09

标签: matlab

我有一个脚本可以从Matlab程序中提取一堆x,y,z坐标。他们填充了一个3列矩阵。然后,我需要将此矩阵写到一个文本文件中,所以我有一个单独程序的坐标文件。将内容写出来的代码如下:

Coords = crop_points %just a 3 column array with a bunch of x,y,z coords
CoordOutput = fopen('coords.txt', 'a+') %Opening a text file that I will append as I want more than one set of coords added to this
fprintf(CoordOutput, '%d %d %d\n', Coords) %This is where it all goes wrong

Coords是一个类似于以下内容的矩阵:

1045 1300 200
1500 1400 250
378 450 120

但是要有1000多行,每个数字都放在一个单独的单元格中。

由于某些原因,输出文本文件将如下所示:

1045 1500 378
1300 1400 450
200 250 120

当前,不是将矩阵的每一行添加到文本文件的每一行,而是将每一行添加到文本文件的当前列,但是使文本文件具有3个相等大小的列。

我假设我错过了fprintf的使用,但是在查看文档时我不确定如何使用。

1 个答案:

答案 0 :(得分:3)

Matlab使用矩阵的column- major representation,因此它按列读取它,并按照'%d %d %d'的说明将值打印成三元组。要正确打印矩阵,只需将其转置:

fprintf(CoordOutput, '%d %d %d \n', Coords.') % note the .' after the matrix name

此外,请注意,您的(原始)斜杠是向后的,尽管如果您在打印文件中没有看到斜杠,则可能是问题所在。

或者,您可以将dlmwrite与空格分隔符一起使用:

dlmwrite('coords.txt',Coords,'delimiter',' ')

(在此之前不需要fopen,只需上面的行)