find函数matlab_关于如何在matlab中导入并翻译Hypemesh导出的大型刚度矩阵txt文本(下)...

本文主要是介绍find函数matlab_关于如何在matlab中导入并翻译Hypemesh导出的大型刚度矩阵txt文本(下)...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    在上个部分,我们介绍了如何将Hypemesh导出的大型刚度矩阵快速导入matlab,并保存成data_K.mat文件。这一节,我们将介绍如何将它翻译成matlab可以使用的矩阵变量,并参与运算。

     由于这个大型刚度矩阵125万x125万≈1e12。matlab甚至其他计算软件无法保存这个大的一个矩阵文件。而这个刚度矩阵作为稀疏矩阵其中非零元素的数目只有有500多万。采用sparse稀疏矩阵技术是可以保存。

这里简单介绍一下这个Hypemesh导出的大型刚度矩阵txt文本。如图DMIG开头的标识符是换行符,后面两列是表示这条非零元素在刚度矩阵中列数的信息。我们已经将左边字母和符号等批量删除,得到了右边textread函数可以直接读取的文本。则换行符转化成了某行第三列为0。

35f05e1968607f9b59724e313e11f97e.png

     下面是采用通俗易懂的循环语句进行稀疏矩阵的赋值。循环语句就是逐行扫略,碰到换行符,行号k更新一次。随后计算这条数据的列数,将文本中第三列数据赋值给稀疏矩阵data。我们预估一下这样扫略需要多长时间,先计算1000行需要44.53秒,再对5165882行进行预估,可以看到用循环语句需要63.9小时才能算完。电脑跑两天半,实际上对于这么大的循环,电脑后期会越跑越慢,所以电脑可能得跑三天才能算完,这非崩即废。

6820f80cb81465ff0746fc6885fc08ce.png

clear allclcclose alltic load data_KbufenAX = data_K; data=sparse(41703*3,41703*3);k=1;i=0;% while i<5165882while i<1000    i=i+1;    if(bufenAX(:,3)==0)        k=k+1;    end    data(k,3*(bufenAX(i,1)-1)+bufenAX(i,2))=bufenAX(i,3);    data(3*(bufenAX(i,1)-1)+bufenAX(i,2),k)=bufenAX(i,3);endtoc

       所以肯定有更高效的赋值方式。那就是矩阵操作。怎么来形容这个矩阵操作呢?这么说吧,矩阵操作就像高考空间几何大题里的几何法,而循环语句就相当于代数法。哇,这个比喻真是太贴切了。所以循环语句通俗易懂,易于想到,提笔就写,但是计算耗时。而矩阵操作需要进一步思考,不熟悉matlab矩阵运算的规则的话,往往不好理解,但是计算效率很高。代码也很简洁。大家要注意matlab的基本运算单位是矩阵,如果以其他编程语言比如C语言等编程思维进行编写,难以发挥出矩阵运算的优势。对于小型数据看不出效率区别,但是像我们今天介绍的大型数据,计算效率问题将异常突出。所以很多人诟病matlab中for循环耗时,而其他语言循环语句执行很高效。这只是因为matlab为你提供了飞机和自行车,而你非要骑个自行车跑。当然想开飞机就需要更多经验和技术,这并不像骑自行车那么简单。

      好了,我们继续介绍如何使用矩阵操作实现赋值过程,可以看到相同的过程,使用矩阵操作只需要2s左右就可以完成。对于提取一次可以用循环算它几天几夜,但是多次提取,甚至需要matlab和有限元计算软件联合仿真并且中间以txt文本传输刚度矩阵等数据的话,循环操作是不现实的,只能使用矩阵操作来实现这里对矩阵操作的部分语句进行了注释。能够读懂循环语句的同学,应该可以看懂这部分代码。个别函数不清楚,可以查询,比如在左侧command window输入 doc repelem可以查询关于这个repelem函数的用法和用例。

clear allclcclose alltic load data_K[u v]= find(data_K(:,3)~=0);[u_hang v_hang]= find(data_K(:,3)==0);data_new = data_K(u,:);lie = 3*(data_new(:,1)-1) +data_new(:,2);hang_num = diff(u_hang)-1;%get  column number of each rowhang_num = [hang_num ;size(data_K,1) - u_hang(size(u_hang,1))];%add last rowvv = 1:size(hang_num,1);hang = repelem(vv,hang_num')';K = sparse(hang,lie,data_new(:,3));%% make symmetry assignpian = K - diag(diag(K));K = pian+pian'+diag(diag(K));toc

   文末依然附上本次使用的txt文本和相关代码文件。供大家学习使用。

链接:https://pan.baidu.com/s/1edm_eKDGUp1YJVM620tjFw

提取码:ypsv

    目前MATLAB学习笔记总用户数已经达到7641,多篇推送受到大家多次收藏与分享。说明很多人在使用微信搜一搜查询学习资料,也说明MATLAB学习笔记的程序实例的实用性。感谢大家的支持。

9a35faf77c350d68ebb42669393e0fec.png

    如果对程序实例中的代码有疑问,可发邮件至weizhuanaa@163.com一起讨论。

这篇关于find函数matlab_关于如何在matlab中导入并翻译Hypemesh导出的大型刚度矩阵txt文本(下)...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/320557

相关文章

golang panic 函数用法示例详解

《golangpanic函数用法示例详解》在Go语言中,panic用于触发不可恢复的错误,终止函数执行并逐层向上触发defer,最终若未被recover捕获,程序会崩溃,recover用于在def... 目录1. panic 的作用2. 基本用法3. recover 的使用规则4. 错误处理建议5. 常见错

Python3脚本实现Excel与TXT的智能转换

《Python3脚本实现Excel与TXT的智能转换》在数据处理的日常工作中,我们经常需要将Excel中的结构化数据转换为其他格式,本文将使用Python3实现Excel与TXT的智能转换,需要的可以... 目录场景应用:为什么需要这种转换技术解析:代码实现详解核心代码展示改进点说明实战演练:从Excel到

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Java导出Excel动态表头的示例详解

《Java导出Excel动态表头的示例详解》这篇文章主要为大家详细介绍了Java导出Excel动态表头的相关知识,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录前言一、效果展示二、代码实现1.固定头实体类2.动态头实现3.导出动态头前言本文只记录大致思路以及做法,代码不进

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三