一般在matlab中打印数据,肯定都是打印的矩阵里面的数据。这里随便设计一个矩阵数据
A = [ 1,2,3; ...
4,5,6; ...
7,8,9; ];
1.基本打印流程
1.1.读取数据fopen函数
fid = fopen('data.txt','wt');
后面再对该文件进行操作,都是对fid
进行操作,文件名为data.txt
。后面的wt
是对于该文件的操作方式,本来是w
,加个t
是为了生成一个文本文件(txt类型文件),读取操作解释如下表。
操作符 | 功能 |
---|---|
'r | 打开要读取的文件。 |
‘w’ | 打开或创建要写入的新文件。放弃现有内容(如果有)。 |
‘a’ | 打开或创建要写入的新文件。追加数据到文件末尾。 |
‘r+’ | 打开要读写的文件。 |
‘w+’ | 打开或创建要读写的新文件。放弃现有内容(如果有)。 |
‘a+’ | 打开或创建要读写的新文件。追加数据到文件末尾。 |
‘A’ | 打开文件以追加(但不自动刷新)当前输出缓冲区。 |
‘W’ | 打开文件以写入(但不自动刷新)当前输出缓冲区。 |
1.2.打印数据fprintf函数
将矩阵数据打印到该文件中。
fprintf(fid,'%d ',A);
可见打印的数据是按照列进行打印的,先打印第一列,然后依次第二列直到最后一列。
如果想按行打印,可以用矩阵转置的方式。
fprintf(fid,'%d ',A');
备注:这里A'
是矩阵共轭转置,A.
是矩阵的转置
1.2.1.操作符使用
有时候为了观察数据比较方便,想打印成矩阵的样子,其代码就可以这样写。
[m,n] = size(A);
fprintf(fid,'矩阵A为:\n');
for i = 1 : m
for j = 1 : n
fprintf(fid,'%d\t',A(i,j));
end
fprintf(fid,'\n');
end
也可以按照自己实际需求去写
这个一般可能需要使用别的操作符,各种操作符的表示形式如下:
特殊字符 | 表示形式 |
---|---|
单引号 | ‘’ |
百分比字符 | %% |
反斜杠 | \ |
警报 | \a |
退格符 | \b |
换页符 | \f |
换行符 | \n |
回车符 | \r |
水平制表符 | \t |
垂直制表符 | \v |
其 Unicode® 数值可以通过十六进制数 N 表示的字符 | \xN 示例:sprintf(’\x5A’) 返回 ‘Z’ |
其 Unicode 数值可以通过八进制数 N 表示的字符 | \N 示例:sprintf(’\132’) 返回 ‘Z’ |
1.3.关闭文件fclose函数
在我们matlab代码设计中,关闭文件是非常重要的,我们对一个文件处理完之后,一定要记得写关闭文件,不然对于大型的算法验证来说,会导致文件打开过多,程序跑崩的情况。
函数使用如下:
fclose(fid);
1.4.其他打印矩阵数据的方式
可以直接使用这个函数按照矩阵的格式把数据打印出来。
dlmwrite('data.txt',A,'\t');
'data.txt'
是存储的文件名,A
是矩阵,'\t'
是指每个元素后面带个制表符。
最终结果如图:
2.矩阵的相关变换函数
有时候想打印一个矩阵的数据,并且需要打印成矩阵的格式,一般就可以用上面提到的dlmwrite
函数直接打印,不要用for
循环进行打印,个人感觉,for
循环要比较耗时间。如果打印的矩阵需要进行一些变换,这样在用dlmwrite
函数的时候就需要对矩阵进行相关的变换才行。
比如我们想把矩阵的数据倒着进行打印,那就需要把矩阵旋转180度。就可以这样写
dlmwrite('data1.txt',rot90(A,2),'\t');
相关矩阵操作函数如下:
函数 | 功能 |
---|---|
A.’ | 转置 |
A’ | 共轭转置 |
inv(A) | 逆矩阵 |
rot90(A,i) | i为正,为逆时针旋转,I为负,为顺时针旋转。如i为2就是逆时针180度,为-1为顺时针90度 |
以及一些别的操作函数
MATLAB中矩阵常用的操作函数