Issues with order that fprintf prints data

I am trying to print a matrix to a .txt file using fprintf. The code I have written looks like this:
fprintf(fileName,'Header\r\n\r\n');
fprintf(fileName,'%f %f\r\n',matrix);
The matrix looks something like this:
matrix = 1 1
2 2
3 3
I want the code to print out exactly what is in the matrix, but instead it is going down each collumn to populate the rows in the text file, like this:
Header
1 2
3 1
2 3
Any ideas as to why this is occuring?

 採用された回答

Cris LaPierre
Cris LaPierre 2021 年 3 月 22 日
編集済み: Cris LaPierre 2021 年 3 月 22 日

1 投票

MATLAB stores the data in column-major order by default. The simplest way is to address this is to transpose matrix.
matrix = [1 1; 2 2; 3 3];
fprintf('%f %f\r\n',matrix');
1.000000 1.000000 2.000000 2.000000 3.000000 3.000000
You might also consider using writetable (includes table variable names) or writematrix. It could simplify your code, and will handle writing a table/matrix as expected.

3 件のコメント

Peyton Jay
Peyton Jay 2021 年 3 月 22 日
I'm currently using writematrix to get arround the issue, the main problem is I wanted to be able to add the headers into the text file which is why I was using fprintf
Cris LaPierre
Cris LaPierre 2021 年 3 月 22 日
What do your headers look like?
If they could be variable names, consider using a table. Try this example.
matrix = [1 1; 2 2; 3 3];
Tmatrix = array2table(matrix);
Tmatrix.Properties.VariableNames = ["Apples","Oranges"]
Tmatrix = 3×2 table
Apples Oranges ______ _______ 1 1 2 2 3 3
With the data formatted correctly as a table, now use writetable(Tmatrix,filename,'Delimiter'," ") to create your file.
Peyton Jay
Peyton Jay 2021 年 3 月 22 日
That does it, thank you!

サインインしてコメントする。

その他の回答 (0 件)

製品

リリース

R2020a

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by