数据处理技巧(9):MATLAB将多个矩阵放在同一行显示,并写入txt文件

生成效果

将9个矩阵显示在MATLAB命令行窗口中,一行有3个矩阵,一列显示3个矩阵,共3行3列
在这里插入图片描述
加上分割线会看得比较清楚
在这里插入图片描述

要打印的矩阵

大小是33n,这里的n取9
为了要显示多个矩阵能规律显示,这里先自定义9个矩阵,并从1赋值到9
在这里插入图片描述
具体程序实施过程

Matnum = 9; % 矩阵的总个数
Matval = ones(3,3,Matnum);  % 9个矩阵,每一个矩阵都是33for 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         % 每一个矩阵一共有3for 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         % 每一个矩阵一共有3for 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个矩阵,每一个矩阵都是33for 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         % 每一个矩阵一共有3for 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个矩阵,每一个矩阵都是33for 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         % 每一个矩阵一共有3for 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         % 每一个矩阵一共有3for 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中的数据

记得点个赞再走~~~

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值