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

news2025/1/13 10:12:47

MATLAB将多个矩阵放在同一行显示,并写入txt文件

    • 生成效果
    • 要打印的矩阵
    • 代码思路
    • 记录程序运行时间
    • 写入文档
    • MATLAB程序
    • 生成效果
    • 相关链接
  • 记得点个赞再走~~~

生成效果

将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中的数据

记得点个赞再走~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/72666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]JAVA毕业设计网上拍卖系统(系统+LW)

[附源码]JAVA毕业设计网上拍卖系统(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

166.JWT简介与Django中使用JWT

1. JWT 1.1 JWT概述 基于django-rest-framework的登陆认证方式常用的大体可分为四种: BasicAuthentication:账号密码登陆验证SessionAuthentication:基于session机制会话验证TokenAuthentication: 基于令牌的验证JSONWebTokenAuthenticatio…

Python中使用国内源头下载依赖

有关更多的Python 开发内容,可访问:《 Python Flask开发指南》 Python开发中对于项目的依赖通常是用pip install命令进行下载,默认官网下载源为国外网络,会经常出现下载超时的问题。那么如何修改下载源使得我们能快速下载资源,如下介绍两种方式设置国内下载源。 国内下载源…

西湖大学张岳老师NLP课程笔记1 Introduction

西湖大学张岳老师NLP课程笔记1 Introduction 参考资料 B站链接课程主页 《Natural Language Processing: A Machine Learning Perspective 》 csdn大佬笔记 https://blog.csdn.net/qq_45645521/category_11685799.html 文章目录西湖大学张岳老师NLP课程笔记1 Introduction1.…

常用工具:介绍一款免费开源录屏工具-captura

网上能搜到的大部分录屏工具表面打着免费的旗号,实际上下载之后不是有水印就是限制分辨率和时长,介绍一款免费无水印的开源录屏截屏工具captura。 准备工作 要使用这个工具,必须事先在电脑上安装ffmpeg工具包,安装方式见&#x…

DRV8870/A4950/AT8870(3.6A单通道刷式直流电机驱动IC)

描述 AT8870是一款刷式直流电机驱动器,适用于打印机、电器、工业设备以及其他小型机器。两个逻辑输入控制H桥驱动器,该驱动器由四个N-MOS组成,能够以高达3.6A的峰值电流双向控制电机。利用电流衰减模式,可通过对输入进行脉宽调制(…

【电源专题】案例:电池存储40天电压从3.9V掉到了3.5V是什么异常?

本案例是在我休假过程中发现的。同事反馈说客户发现我们的一批产品有概率在存储40多天后发现电池从3.9V掉到了3.5V,并且制程、软件、硬件都有差异。会有可能存在什么异常? 首先我们要了解的是大多数带电池的产品在销售给客户时都会充好电(如手机/充电宝等),但不一定是充…

极市直播预告丨阿里达摩院:兼顾速度与精度的高效目标检测框架DAMO-YOLO

|极市线上分享第106期 | 一直以来,为让大家更好地了解学界业界优秀的论文和工作,极市已邀请了超过100位技术大咖嘉宾,并完成了105期极市线上直播分享。往期分享请前往http://bbs.cvmart.net/topics/149或直接阅读原文,也欢迎各位…

初学者如何学习FPGA?一文为你讲解清楚

想学习一门技术之前,我们先会从编程语言入手。就像学习FPGA,往往是从VHDL或者Verilog开始入手学习的。 当然,任何编程语言的学习都不能一劳永逸,因为任何经验技巧都是在实践的过程中才能学到,FPGA的学习当然也不例外。…

Python爬虫实战,Request+urllib模块,批量下载爬取飙歌榜所有音乐文件

前言 今天给大家介绍的是Python爬取飙歌榜所有音频数据并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得。 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样的纯文 本数据爬取…

C语言实现三子棋(超详解版本)

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​ 📣系列专栏:鹏哥带我学c带我飞 💬总结:希望你看…

分布式电源接入对配电网影响的研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

springboot+easyexcel:导入excel表格

目录 前言 1.常规导入 2.读取到指定的列 3.读取全部的sheet页 4.日期、数字及其他自定义格式的转换 5.表头有多行的读取 前言 excel表格的导入与导出,可以说是业务系统里比较常见的功能了,早些时候相信很多人都是使用POI实现excel的导入与导出功能…

还有13天圣诞节,用python整个简易版的圣诞树玩一下.......

人生苦短 我用python 好像很久没发文章啦! 看一眼日历快到圣诞节了 , 现在就来用python整个圣诞树玩一下吧! 代码🎆 模块 源码、资料电子书点击此处 import turtle as t from turtle import * import random as r import time…

项目经理的需求常见分类总结

今天聊聊如何进行需求分类、需求规划和优先级排序。我们都会面临需求多,任务重,资源少的现状,在这种情况下,就需要产品人员对产品需求进行评估,找到在当前阶段最重要的功能进行开发,那么怎么来进行评估和判…

Spring整合Apollo的原理

Spring和Apollo源码涉及的类 Spring:ApplicationContextInitializer、BeanFactoryPostProcessor、BeanPostProcessor、Environment、CompositePropertySource Apollo:ApolloApplicationContextInitializer、PropertySourcesProcessor、ApolloProcessor、…

消息发布确认

描述:在消息投递的过程中可能会存在消息丢失的行为产生,生产者到交换机,交换机到队列的过程都有可能出现这个现象。所以我们要有个发布确认的操作来防止消息丢西。 确认机制方案: 配置文件配置交换机发布确认模式: p…

年终颁奖 | 建模助手年度产品经理正在评比当中!

大家好,我是建模助手。 12月来了,又到了激情总结,却发现flag倒被打脸的时刻!我就想问问在座各位:年初的定立的flag,完成得咋样了? 我们今年就有一张很优秀的成绩单:↓↓↓ 建模助手…

优优聚:学会删减菜单,帮你提升销量和转化

如今随着外卖市场的不断发展,越来越多的堂食店铺加入外卖,但是对于做外卖很多老板认为,自家堂食做得不错,那么直接把堂食的菜单上传到外卖,结果这样做的后果就是不仅累还不挣钱。下面优优聚小编就来讲一下。 1、菜单太…

IDEA 导入别人的javaweb项目进行部署

前言 我主要是进行java的springboot项目和vue项目的开发,但是架不住在这些框架兴起之前,公司内部已经是有其他的老的框架,我需要在这些老的框架进行修改和调整代码。原本我是使用的eclipse软件进行部署,也比较简单; …