我有一个脚本可以从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
的使用,但是在查看文档时我不确定如何使用。
答案 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
,只需上面的行)