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

相关文章

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O