我想编写一个以数字 n 作为输入的函数,然后输出一个制表符分隔的 word 文档,它看起来像 5 行:
1 2 3...nn n-1 n-2 ..1
让我告诉你我已经尝试过的事情:用我想要的整数创建这样的向量很容易,但是如果我以 ascii 格式保存文件,则在输出中整数以“1.0000000e”之类的格式出现+00”。现在我用谷歌搜索发现可以使用 %d 和 fprintf 格式化输出,但是考虑到行长度是输入的一部分,实现它的最有效方法是什么?
我想编写一个以数字 n 作为输入的函数,然后输出一个制表符分隔的 word 文档,它看起来像 5 行:
1 2 3...nn n-1 n-2 ..1
让我告诉你我已经尝试过的事情:用我想要的整数创建这样的向量很容易,但是如果我以 ascii 格式保存文件,则在输出中整数以“1.0000000e”之类的格式出现+00”。现在我用谷歌搜索发现可以使用 %d 和 fprintf 格式化输出,但是考虑到行长度是输入的一部分,实现它的最有效方法是什么?
也许是这样的:
Nrow = 5;
N = 10;
dlmwrite('my_filename.txt', repmat([1:N, N:-1:1], Nrow, 1), 'delimiter', '\t', 'precision', '%d');
如果您指的是普通的 *.txt 文件,我通常会使用带有 fprintf(fileid,'%d things to print',5) 的 for 循环,并带有适当的 fopen(.) 语句。你会惊讶于 fopen 与 'w' 和 'a' 的关系。试试看,让我们知道!
回应rayryeng:你是对的!这是使用 fprintf 将矩阵写入文件的代码示例,没有 for 循环。
A=rand(5);
fid=fopen('Rand_mat.txt','w');
fprintf(fid,'%0.4f %0.4f %0.4f %0.4f %0.4f\n',A');
fclose (fid);
其中 A 是转置的,因为 MATLAB 首先读取矩阵的列。
谢谢!