MATLAB将多个矩阵放在同一行显示,并写入txt文件
- 生成效果
- 要打印的矩阵
- 代码思路
- 记录程序运行时间
- 写入文档
- MATLAB程序
- 生成效果
- 相关链接
- 记得点个赞再走~~~
生成效果
将9个矩阵显示在MATLAB命令行窗口中,一行有3个矩阵,一列显示3个矩阵,共3行3列
加上分割线会看得比较清楚
要打印的矩阵
大小是33n,这里的n取9
为了要显示多个矩阵能规律显示,这里先自定义9个矩阵,并从1赋值到9
具体程序实施过程
Matnum = 9; % 矩阵的总个数
Matval = ones(3,3,Matnum); % 9个矩阵,每一个矩阵都是3行3列
for iMat = 1:Matnum
Matval(:,:,iMat) = iMat.*Matval(:,:,iMat); % 给矩阵赋值
end
代码思路
定义 一行显示 Matcol个矩阵,一列显示 Matrow个矩阵。这里,Matcol = Matrow =3.
Matrow = 3; % 一行显示Matrow个矩阵
Matcol = 3; % 一列显示Matcol个矩阵
再生成要显示的矩阵,为了区分,9个矩阵的值从1依次到9递增。
for iMat = 1:Matnum
Matval(:,:,iMat) = iMat.*Matval(:,:,iMat); % 给矩阵赋值
end
检查,如果要显示的矩阵个数和读取的矩阵总个数不等,那么打印警告,并且终止程序。
if Matrow*Matcol ~= Matnum % 给一个警告
fprintf("警告:要显示的矩阵总个数和矩阵个数不相符!终止程序\n")
else
% 运行程序
end
若相等,继续程序
循环的思路是,先一行一行地打印。
iprint = (ivolrow-1)*Matrow+jvolcol;
fprintf("%6.2f %6.2f %6.2f ",...
Matval(irowprint,1,iprint),Matval(irowprint,2,iprint),Matval(irowprint,3,iprint));
第二次打印
for jvolcol = 1:Matcol % 一列显示Matcol个矩阵
iprint = (ivolrow-1)*Matrow+jvolcol;
fprintf("%6.2f %6.2f %6.2f ",...
Matval(irowprint,1,iprint),Matval(irowprint,2,iprint),Matval(irowprint,3,iprint));
end
fprintf('\n'); % 一个矩阵中的一行结束
第三次打印
一行结束,换行,打印下一行
for irowprint = 1:3 % 每一个矩阵一共有3行
for jvolcol = 1:Matcol % 一列显示Matcol个矩阵
iprint = (ivolrow-1)*Matrow+jvolcol;
fprintf("%6.2f %6.2f %6.2f ",...
Matval(irowprint,1,iprint),Matval(irowprint,2,iprint),Matval(irowprint,3,iprint));
end
fprintf('\n'); % 一个矩阵中的一行结束
end
fprintf('\n'); % 一行显示Matrow个矩阵显示完毕,下一行
一行的矩阵打印完毕,换行,打印下一行的矩阵
fprintf('Matval 矩阵:\n');
for ivolrow = 1: Matrow % 一行显示Matrow个矩阵
for irowprint = 1:3 % 每一个矩阵一共有3行
for jvolcol = 1:Matcol % 一列显示Matcol个矩阵
iprint = (ivolrow-1)*Matrow+jvolcol;
fprintf("%6.2f %6.2f %6.2f ",...
Matval(irowprint,1,iprint),Matval(irowprint,2,iprint),Matval(irowprint,3,iprint));
end
fprintf('\n'); % 一个矩阵中的一行结束
end
fprintf('\n'); % 一行显示Matrow个矩阵显示完毕,下一行
end
所以,大循环是
一列显示多少个矩阵
每一个矩阵有多少行,就循环几次
一行显示多少个矩阵
每一个矩阵的一行有3个数据,打印这三个数据,末尾用空格或者\t隔开
结束
结束
结束
记录程序运行时间
如果想要打印程序运行时间,在程序刚开始的时候,输入 tic
程序结束的时候,输入toc即可。
tic % 程序开始的时间点
% 这里是程序内容
% 这里是程序内容
% 这里是程序内容
% 这里是程序内容
% 这里是程序内容
toc % 程序会自动打印输出所用时间
或者打印在文字中
tic % 程序开始的时间点
% 这里是程序内容
% 这里是程序内容
% 这里是程序内容
% 这里是程序内容
% 这里是程序内容
runtime = toc % 记录所用时间
fprintf("=== 计算完成,一共耗时%5.2f秒\n",runtime); % 打印运行时间
写入文档
如果要将数据按照以上格式保存进文档。首先先新建文档,并打开。
fprintf函数,要加上该文档的名称
timestr = datestr(now,30); % 获取当前时间
folderPath = timestr;%创建文件夹路径
% 创建数据txt
filename = "data"+timestr+".txt"; % 拼接文件名
fid=fopen(filename,'a+');%写入文件路径
% 这里是程序内容
% 这里是程序内容
% 这里是程序内容
% 这里是程序内容
% 这里是程序内容
fclose(fid); % 关闭文件
MATLAB程序
不写入文档的版本
clc;clear; % 清空工作区,清空命令行窗口
tic; % 记录程序运行时间
Matrow = 3; % 一行显示Matrow个矩阵
Matcol = 3; % 一列显示Matcol个矩阵
Matnum = 9; % 矩阵的总个数
Matval = ones(3,3,Matnum); % 9个矩阵,每一个矩阵都是3行3列
for iMat = 1:Matnum
Matval(:,:,iMat) = iMat.*Matval(:,:,iMat); % 给矩阵赋值
end
if Matrow*Matcol ~= Matnum % 给一个警告
fprintf("警告:要显示的矩阵总个数和矩阵个数不相符!\n")
else
fprintf('Matval 矩阵:\n');
for ivolrow = 1: Matrow % 一行显示Matrow个矩阵
for irowprint = 1:3 % 每一个矩阵一共有3行
for jvolcol = 1:Matcol % 一列显示Matcol个矩阵
iprint = (ivolrow-1)*Matrow+jvolcol;
fprintf("%6.2f %6.2f %6.2f ",...
Matval(irowprint,1,iprint),Matval(irowprint,2,iprint),Matval(irowprint,3,iprint));
end
fprintf('\n'); % 一个矩阵中的一行结束
end
fprintf('\n'); % 一行显示Matrow个矩阵显示完毕,下一行
end
end
runtime = toc; % 记录程序运行时间
fprintf("=== 计算完成,一共耗时%7.4f 秒。 ===\n",runtime);
写入文件的版本
clc;clear; % 清空工作区,清空命令行窗口
tic; % 记录程序运行时间
timestr = datestr(now,30); % 获取当前时间
folderPath = timestr;%创建文件夹路径
% 创建数据txt
filename = "data"+timestr+".txt"; % 拼接文件名
fid=fopen(filename,'a+');%写入文件路径
Matrow = 3; % 一行显示Matrow个矩阵
Matcol = 3; % 一列显示Matcol个矩阵
Matnum = 9; % 矩阵的总个数
Matval = ones(3,3,Matnum); % 9个矩阵,每一个矩阵都是3行3列
for iMat = 1:Matnum
Matval(:,:,iMat) = iMat.*Matval(:,:,iMat); % 给矩阵赋值
end
if Matrow*Matcol ~= Matnum % 给一个警告
fprintf("警告:要显示的矩阵总个数和矩阵个数不相符!\n")
else
% 打印到窗口
fprintf('Matval 矩阵:\n');
for ivolrow = 1: Matrow % 一行显示Matrow个矩阵
for irowprint = 1:3 % 每一个矩阵一共有3行
for jvolcol = 1:Matcol % 一列显示Matcol个矩阵
iprint = (ivolrow-1)*Matrow+jvolcol;
fprintf("%6.2f %6.2f %6.2f ",...
Matval(irowprint,1,iprint),Matval(irowprint,2,iprint),Matval(irowprint,3,iprint));
end
fprintf('\n'); % 一个矩阵中的一行结束
end
fprintf('\n'); % 一行显示Matrow个矩阵显示完毕,下一行
end
% 打印到文档中
fprintf(fid,'Matval 矩阵:\n');
for ivolrow = 1: Matrow % 一行显示Matrow个矩阵
for irowprint = 1:3 % 每一个矩阵一共有3行
for jvolcol = 1:Matcol % 一列显示Matcol个矩阵
iprint = (ivolrow-1)*Matrow+jvolcol;
fprintf(fid,"%6.2f %6.2f %6.2f ",...
Matval(irowprint,1,iprint),Matval(irowprint,2,iprint),Matval(irowprint,3,iprint));
end
fprintf(fid,'\n'); % 一个矩阵中的一行结束
end
fprintf(fid,'\n'); % 一行显示Matrow个矩阵显示完毕,下一行
end
end
fclose(fid); % 关闭文件
runtime = toc; % 记录程序运行时间
fprintf("=== 计算完成,一共耗时%7.4f 秒。 ===\n",runtime);
生成效果
MATLAB命令行的输出
生成的txt文件
相关链接
数据处理技巧(8):MATLAB读取txt文本数据并转换成列向量
数据处理技巧(7):MATLAB 读取数字字符串混杂的文本文件txt中的数据