精华内容
下载资源
问答
  • matlab 三角网格读取

    热门讨论 2012-10-17 16:51:00
    基于matlab读取stl文件并去除文件中的冗余点建立拓扑结构,方便后续操作。
  • TGrid和FLUENT网格文件遵循特定格式。 它们是扩展名为* .msh的ascii文件... 此函数接受网格文件地址作为输入并加载网格信息,然后将其转换为MATLAB数据并返回包含基本网格信息的结构。 这是第一个版本,仅支持2D网格
  • xyzread 将文本 .xyz 文件读入您​​的 Matlab 工作区。 这是为 GMT 生成的 .xyz 文件编写的,但也适用于其他 .xyz 文件。 xyz2grid 将 .xyz 文件中的列数据转换为可以使用 surf、pcolor 或 imagesc 查看的网格...
  • 输入ply点云进行三角网格matlab 输出三角网格化的效果
  • matlab读取STL文件

    2019-05-18 16:25:54
    此程序可以焊好的读取STL文件,可以输出F(面数),V(顶点),N(三角面片的法向量)等,可以稳定输出
  • 打开Abaqus FEM网格并生成Matlab。 *.inp 和 *.csv 文件在 Abaqus CAE 中生成: *.inp:基于任何模型创建作业 > 写入输入*.csv:打开任何 ODB > 报告 > 字段输出 > 位置:唯一节点和设置:逗号分隔值 (CSV)
  • matlab读取bdf文件,外网资源;BCIduino脑机接口社区整理。
  • matlab工具箱,处理三角网格格式的三维物体。三角网格格式是指存储了物体的顶点和三角面片的顶点索引;工具箱包括读取,平滑,计算距离等等很多基本的函数,对于初学者非常有用。
  • MATLAB读取obj文件中的数据,读取的数据是点和面
  • matlab 读取三维文档,.ply格式。 包括点、三角面和颜色。
  • [Z, LAT, LON] = DTED_READ(FILENAME) 将指定 DTED 文件中的高程数据 (Z) 作为以米为单位的高程的常规数据网格返回。 LAT 和 LON 提供一维数组,其纬度和经度(以度为单位)对应于高程网格的... 仅读取最少量的元数据。
  • 基于笛卡尔网格的三维流动数值模拟,其流场信息可以通过tecplot格式进行输出,方便tecplot对流场进行可视化处理,但对数据进行在加工时,还是导入matlab中比较方便,那么对于一个tecplot数据文件,matlab是不能直接...

    基于笛卡尔网格的三维流动数值模拟,其流场信息可以通过tecplot格式进行输出,方便tecplot对流场进行可视化处理,但对数据进行在加工时,还是导入matlab中比较方便,那么对于一个tecplot数据文件,matlab是不能直接读取的,必须有一个函数将tecplot数据文件中数据转换成matlab便于操作的数据格式。

    tecplot数据文件前三行是文件头,其中第一行是数据文件说明,第二行中是文件中所定义的变量名,第三行,对于笛卡尔网格的流场,其包含了每个空间方向上离散的数据数目。通过处理第二行文本,可以获取所定义的变量及其数目。

    tecplot文件中数据一行是一个记录,一行中数据的顺序和文件头中第二行定义的变量顺序相对应,通常前三个数据是x,y,z,对应网格点空间位置。

    Title= "simulation data"
    VARIABLES= "X","Y","Z","U","V","W","RHO"
    ZONE T= "BOX",I= 100,J=321,K=100,F= POINT
    0 0 0 0.000252868 0.00386761 -0.00194455 1000.01
    1 0 0 -0.000252631 -0.00258331 0.00188909 1000.01
    2 0 0 0.000252594 0.00441002 -0.00183506 1000.01
    3 0 0 -0.000252256 -0.0019755 0.00178188 1000
    4 0 0 0.000252931 0.00492305 -0.00173004 1000
    ...

    1、matlab读取tecplot文件,通过读取文件头获取文件所定义变量以及变量数目,同时读取文件中所包含数据信息,所读取的数据保存在一个四维数组中,最后一个维度代表每个变量,变量名保存在一个元胞数组中。

    1.1 tecplot数据为空间三维流场,tecplot2mat_3D

    % read data from tecplot file, and save the variables to mat 
    % filename: the name of the tecplot file including the extensions
    % var: the data of variables, is a four dimensions array, the last dimension is the the number of variable
    % var_name: the name of the variables, is a cell
    % var_num: the number of the variables
    function [var,var_name,var_num] = tecplot2mat_3D(filename)
    %% tecplot data file read
    % open the file
    fid = fopen(filename);
    
    % read the second line of data file
    [~] = fgetl(fid);
    str = fgetl(fid);
    
    % get the number of the variables
    o1 = regexpi(str,'"','start');
    var_num = length(o1)/2;
    
    % get the name of the variables
    var_name = cell(1,var_num);
    for i = 1:var_num
        var_name{1,i} = str(o1(2*i-1)+1:o1(2*i)-1);
    end
    
    % read the data
    strformat = repmat('%f',1,var_num);
    data = textscan(fid,strformat,'headerlines',1);
    data = cell2mat(data);
    
    % close the file
    fclose(fid);
    
    %% reshape data
    % get discrete points
    xi = sort(unique(data(:,1)));
    yi = sort(unique(data(:,2)));
    zi = sort(unique(data(:,3)));
    
    % number of the discrete points
    num_x = length(xi);
    num_y = length(yi);
    num_z = length(zi);
    
    % initialize the three demonsions array
    var = zeros(num_x,num_y,num_z,var_num);
    
    % assignment the array according to the data
    for n = 1:size(data,1)
        % method 1: we don't know the relationship between the number and the index, we must find the index according to the value    
        %     index_x = find( data(n,1) == xi );
        %     index_y = find( data(n,2) == yi );
        %     index_z = find( data(n,3) == zi );
        
        % method 2: we know the relationship between the value and the index, we can directly access the index 
        index_x = data(n,1) + 1;
        index_y = data(n,2) + 1;
        index_z = data(n,3) + 1;
        
        % access the data
        for i = 1:var_num
            var(index_x,index_y,index_z,i) = data(n,i);
        end
    end
    
    fprintf('reshape the data\n');
    
    %% data save to mat
    index_str = find( '.' == filename );
    if isempty(index_str)
    else
        filename = filename( 1:index_str-1 );
    end
    eval(['save ',filename,'.mat var var_name var_num;']);
    
    fprintf('save the data\n');
    end

    1.2 tecplot数据为空间二维流场,tecplot2mat_2D

    % read data from tecplot file, and save the variables to mat 
    % filename: the name of the tecplot file including the extensions
    % var: the data of variables, is a three dimensions array, the last dimension is the the number of variable
    % var_name: the name of the variables, is a cell
    % var_num: the number of the variables, is a number
    function [var,var_name,var_num] = tecplot2mat_2D(filename)
    %% tecplot data file read
    % open the file
    fid = fopen(filename);
    
    % read the second line of data file 
    [~] = fgetl(fid);
    str = fgetl(fid);
    
    % get the number of the variables
    o1 = regexpi(str,'"','start');
    var_num = length(o1)/2;
    
    % get the name of the variables
    var_name = cell(1,var_num);
    for i = 1:var_num
        var_name{1,i} = str(o1(2*i-1)+1:o1(2*i)-1);
    end
    
    % read the data
    strformat = repmat('%f',1,var_num);
    data = textscan(fid,strformat,'headerlines',1);
    data = cell2mat(data);
    
    % close the file
    fclose(fid);
    
    %% reshape data
    % get discrete points
    xi = sort(unique(data(:,1)));
    yi = sort(unique(data(:,2)));
    
    % number of the discrete points
    num_x = length(xi);
    num_y = length(yi);
    
    % initialize the three demonsions array
    var = zeros(num_x,num_y,var_num);
    
    % assignment the array according to the data
    for n = 1:size(data,1)
        % method 1: we don't know the relationship between the number and the index, we must find the index according to the value
        %     index_x = find(data(n,1) == xi);
        %     index_y = find(data(n,2) == yi);
        
        % method 2: we know the relationship between the value and the index, we can directly access the index 
        index_x = data(n,1) + 1;
        index_y = data(n,2) + 1;
        
        % access the data
        for i = 1:var_num
            var(index_x,index_y,i) = data(n,i);
        end
    end
    
    fprintf('reshape the data\n');
    
    %% data save to mat
    index_str = find( '.' == filename );
    if isempty(index_str)
    else
        filename = filename( 1:index_str-1 );
    end
    eval(['save ',filename,'.mat var var_name var_num;']);
    
    fprintf('save the data\n');
    end

    2、测试脚本,读取给定的TECPLOT文件名,输出文件包含数据以及将文件中定义的变量加载到MATLAB工作区

    clc;clear;
    close all;
    
    filename = 'U3D.dat';
    [var,var_name,var_num] = tecplot2mat_3D(filename);
    
    for i = 1:var_num
        eval([var_name{1,i},'=var(:,:,:,i);']);
    end
    

     3、测试结果,tecplot文件定义的变量就全部加载到工作区了。

     

    转载于:https://www.cnblogs.com/kljfdsa/p/7845816.html

    展开全文
  • MATLAB非结构三角形网格作图程序,网格有SMS得到,格式只是读取问题
  • MATLAB读取nc数据并显示

    万次阅读 2018-09-15 17:03:04
    本篇博客主要介绍采用MATLAB读取nc数据并进行显示。 首先是显示经纬度: 示例代码: lon = ncread('met_em.d02.2018-09-12_00_00_00.nc', 'XLONG_C'); lat = ncread('met_em.d02.2018-09-12_00_00_00.nc', 'XLAT...

    本篇博客主要介绍采用MATLAB读取nc数据并进行显示。

    首先是显示经纬度:

    示例代码:

    lon = ncread('met_em.d02.2018-09-12_00_00_00.nc', 'XLONG_C');
    lat = ncread('met_em.d02.2018-09-12_00_00_00.nc', 'XLAT_C');
    plot(lon, lat, 'r')

    运行结果:

    其次是显示地表温度:

    示例代码:

    lon = ncread('met_em.d02.2018-09-12_00_00_00.nc', 'XLONG_C');
    lat = ncread('met_em.d02.2018-09-12_00_00_00.nc', 'XLAT_C');
    skintemp = ncread('met_em.d02.2018-09-12_00_00_00.nc', 'SKINTEMP');
    disp(skintemp)
    skintemp1=skintemp(:,:);
    pcolor(lat(1: 111, 1: 96),lon(1: 111, 1: 96),skintemp1);

    运行结果:

    欢迎关注我的公众号:

                         编程技术与生活(ID:hw_cchang)

     

    展开全文
  • 保存自用; distmesh是一个较好的网格划分程序,具体可以参考:...2.matlab有限元可以参考徐荣桥的书 3.这里本人打算画一个园内包含一个椭圆的模型: 具体程序如下: a. 网格划分: fh...

    原文来链接:https://blog.csdn.net/conjimmy/article/details/19070495
    保存自用;
    distmesh是一个较好的网格划分程序,具体可以参考:http://persson.berkeley.edu/distmesh/
    2.matlab有限元可以参考徐荣桥的书
    3.这里本人打算画一个园内包含一个椭圆的模型:
    具体程序如下:

    a.

    网格划分:

    fh=@§ 0.05+0.3*dellipse(p,[0.5,0.2]);
    fd=@§ ddiff(dcircle(p,0,0,1),dellipse(p,[0.5,0.2]));
    [p,t]=distmesh2d(fd,fh,0.05,[-1,-1;1,1],[-1,-1;-1,1;1,-1;1,1]);

    b.在distmesh2d.m最后插入语句,导出数据格式(节点坐标,单元材料属性,边界约束条件)

    fid = fopen(‘exam4_2.dat3’, ‘w’) ;
    [ilength,jlength]=size( p );
    fprintf(fid,’%d\n’,ilength);
    for i=1:1:ilength
    fprintf(fid,’%d\t%f\t%f\n’,i,p(i,1),p(i,2));
    end
    [ilength,jlength]=size( t );
    fprintf(fid,’%d\n’,ilength);
    for i=1:1:ilength
    fprintf(fid,’%d\t%d\t%d\t%d\t%d\n’,i,t(i,1),t(i,2),t(i,3),1);
    end
    fclose(fid);
    文件’exam4_2.dat3内容如下:

    5105(节点个数)
    1 -0.707106 -0.707106 (每个节点坐标)
    2 -0.707106 0.707107

    9869(三角单元个数)
    1 5006 4951 4934 1 (标号,i,j,k,材料属性的编号)
    2 197 147 100 1
    3 413 2 366 1
    4 413 2 323 1

    5(5种材料属性)
    1 2.00e9 0.25 100.0 22.0e3(编号,杨氏模量,泊松比,厚度[平面应力填1],密度)
    2 2.60e9 0.20 1.0 23.0e3
    3 2.85e10 0.20 1.0 25.0e3
    4 1.85e10 0.20 1.0 23.0e3
    5 2.85e10 0.20 1.0 22.0e3
    2(约束个数)
    1 2 0.0 (节点,方向【2,为y方向】,0.0(0为固定))
    1 1 0.0

    4 2 0.0 (节点,方向【2,为y方向】,0.0(0为固定))
    41 0.0

    c。调用有限元程序exam_2.m(见徐荣桥书)

    exam4_2 exam4_2.dat3

    d.后处理

    exam4_2_post

    最大主应力云图如下:

    最大剪应力云图如下:

    最小主应力云图如下:

    exam_2。m源程序如下:

    function exam4_2( file_in )
    % 本程序为第四章的第二个算例,采用三角形单元计算隧道在自重作用下的变形和应力
    % exam4_2( filename )
    % 输入参数:
    % file_in ---------- 有限元模型文件

    % 定义全局变量
    % gNode ------------- 节点坐标
    % gElement ---------- 单元定义
    % gMaterial --------- 材料性质
    % gBC1 -------------- 第一类约束条件
    % gK ---------------- 整体刚度矩阵
    % gDelta ------------ 整体节点坐标
    % gNodeStress ------- 节点应力
    % gElementStress ---- 单元应力
    global gNode gElement gMaterial gBC1 gK gDelta gNodeStress gElementStress gNF

    if nargin < 1
        file_in = 'exam4_2.dat' ;
    end
    
    % 检查文件是否存在
    if exist( file_in ) == 0
        disp( sprintf( '错误:文件 %s 不存在', file_in ) )
        disp( sprintf( '程序终止' ) )
        return ;
    end
    
    % 根据输入文件名称生成输出文件名称
    [path_str,name_str,ext_str] = fileparts( file_in ) ;
    ext_str_out = '.mat' ;
    file_out = fullfile( path_str, [name_str, ext_str_out] ) ;
    
    % 检查输出文件是否存在
    if exist( file_out ) ~= 0 
        answer = input( sprintf( '文件 %s 已经存在,是否覆盖? ( Yes / [No] ):  ', file_out ), 's' ) ;
        if length( answer ) == 0
            answer = 'no' ;
        end
        
        answer = lower( answer ) ;
        if answer ~= 'y' | answer ~= 'yes' 
            disp( sprintf( '请使用另外的文件名,或备份已有的文件' ) ) ;
            disp( sprintf( '程序终止' ) );
            return ; 
        end
    end
    
    % 建立有限元模型并求解,保存结果
    FemModel( file_in ) ;          % 定义有限元模型
    SolveModel ;                   % 求解有限元模型
    SaveResults( file_out ) ;      % 保存计算结果
    
    % 计算结束
    disp( sprintf( '计算正常结束,结果保存在文件 %s 中', file_out ) ) ;
    disp( sprintf( '可以使用后处理程序 exam4_2_post.m 显示计算结果' ) ) ;
    

    return ;

    function FemModel(filename)
    % 定义有限元模型
    % 输入参数:
    % filename — 有限元模型文件
    % 返回值:
    % 无
    % 说明:
    % 该函数定义平面问题的有限元模型数据:
    % gNode ------- 节点定义
    % gElement ---- 单元定义
    % gMaterial — 材料定义,包括弹性模量,梁的截面积和梁的抗弯惯性矩
    % gBC1 -------- 约束条件

    global gNode gElement gMaterial gBC1 gNF
    
    % 打开文件
    fid = fopen( filename, 'r' ) ;
    
    % 读取节点坐标
    node_number = fscanf( fid, '%d', 1 ) ;
    gNode = zeros( node_number, 2 ) ;
    for i=1:node_number
        dummy = fscanf( fid, '%d', 1 ) ;
        gNode( i, : ) = fscanf( fid, '%f', [1, 2] ) ;
    end
    
    % 读取单元定义
    element_number = fscanf( fid, '%d', 1 ) ;
    gElement = zeros( element_number, 4 ) ;
    for i=1:element_number
        dummy = fscanf( fid, '%d', 1 ) ;
        gElement( i, : ) = fscanf( fid, '%d', [1, 4] ) ;
    end
    
    % 读取材料信息
    material_number = fscanf( fid, '%d', 1 ) ;
    gMaterial = zeros( material_number, 4 ) ;
    for i=1:material_number
        dummy = fscanf( fid, '%d', 1 ) ;
        gMaterial( i, : ) = fscanf( fid, '%f', [1,4] ) ;
    end
    
    % 读取边界条件
    bc1_number = fscanf( fid, '%d', 1 ) ;
    gBC1 = zeros( bc1_number, 3 ) ;
    for i=1:bc1_number
        gBC1( i, 1 ) = fscanf( fid, '%d', 1 ) ;
        gBC1( i, 2 ) = fscanf( fid, '%d', 1 ) ;
        gBC1( i, 3 ) = fscanf( fid, '%f', 1 ) ;
    end
    
    % 关闭文件
    fclose( fid ) ;
     % 集中力
    %     节点号   自由度号   集中力值
    gNF = [  1,       1,         -800e3;
       1,       2,         -800e3;
       4,       1,         -800e3;
       4,       2,         -800e3;
           ] ;
    

    return

    function SolveModel
    % 求解有限元模型
    % 输入参数:
    % 无
    % 返回值:
    % 无
    % 说明:
    % 该函数求解有限元模型,过程如下
    % 1. 计算单元刚度矩阵,集成整体刚度矩阵
    % 2. 计算单元的等效节点力,集成整体节点力向量
    % 3. 处理约束条件,修改整体刚度矩阵和节点力向量
    % 4. 求解方程组,得到整体节点位移向量
    % 5. 计算单元应力和节点应力

    global gNode gElement gMaterial gBC1 gK gDelta gNodeStress gElementStress gNF
    
    % step1. 定义整体刚度矩阵和节点力向量
    [node_number,dummy] = size( gNode ) ;
    gK = sparse( node_number * 2, node_number * 2 ) ;
    f = sparse( node_number * 2, 1 ) ;
    
    % step2. 计算单元刚度矩阵,并集成到整体刚度矩阵中
    [element_number,dummy] = size( gElement ) ;
    for ie=1:1:element_number
        disp( sprintf(  '计算刚度矩阵,当前单元: %d', ie  ) ) ;
        k = StiffnessMatrix( ie ) ;
        AssembleStiffnessMatrix( ie, k ) ;
    end
    

    % step3. 把集中力直接集成到整体节点力向量中
    [nf_number, dummy] = size( gNF ) ;
    for inf=1:1:nf_number
    n = gNF( inf, 1 ) ;

     d = gNF( inf, 2 ) ;
       f( (n-1)*2 + d ) = gNF( inf, 3 ) ;
    

    end

    % step3. 计算自重产生的等效节点力
    

    % for ie=1:1:element_number
    % disp( sprintf( ‘计算自重的等效节点力,当前单元: %d’, ie ) ) ;
    % egf = EquivalentGravityForce( ie ) ;
    % i = gElement( ie, 1 ) ;
    % j = gElement( ie, 2 ) ;
    % m = gElement( ie, 3 ) ;
    % f( (i-1)*2+1 : (i-1)*2+2 ) = f( (i-1)*2+1 : (i-1)*2+2 ) + egf( 1:2 ) ;
    % f( (j-1)*2+1 : (j-1)*2+2 ) = f( (j-1)*2+1 : (j-1)*2+2 ) + egf( 3:4 ) ;
    % f( (m-1)*2+1 : (m-1)*2+2 ) = f( (m-1)*2+1 : (m-1)*2+2 ) + egf( 5:6 ) ;
    % end

    % step4. 处理约束条件,修改刚度矩阵和节点力向量。采用乘大数法
    [bc_number,dummy] = size( gBC1 ) ;
    for ibc=1:1:bc_number
        n = gBC1(ibc, 1 ) ;
        d = gBC1(ibc, 2 ) ;
        m = (n-1)*2 + d ;
        f(m) = gBC1(ibc, 3)* gK(m,m) * 1e15 ;
        gK(m,m) = gK(m,m) * 1e15 ;
    end
    
    % step 5. 求解方程组,得到节点位移向量
    gDelta = gK \ f ;
    
    % step 6. 计算单元应力
    gElementStress = zeros( element_number, 6 ) ;
    for ie=1:element_number 
        disp( sprintf(  '计算单元应力,当前单元: %d', ie  ) ) ;
        es = ElementStress( ie ) ;
        gElementStress( ie, : ) = es ;
    end
    
    % step 7. 计算节点应力(采用绕节点加权平均)
    gNodeStress = zeros( node_number, 6 ) ;       
    for i=1:node_number                         
        disp( sprintf(  '计算节点应力,当前结点: %d', i  ) ) ;
        S = zeros( 1, 3 ) ;                         
        A = 0 ;
        for ie=1:1:element_number
            for k=1:1:3
                if i == gElement( ie, k ) 
                    area= ElementArea( ie ) ;
                    S = S + gElementStress(ie,1:3 ) * area ;
                    A = A + area ;
                    break ;
                end
            end
        end
        gNodeStress(i,1:3) = S / A ;
        gNodeStress(i,6) = 0.5*sqrt( (gNodeStress(i,1)-gNodeStress(i,2))^2 + 4*gNodeStress(i,3)^2 ) ;
        gNodeStress(i,4) = 0.5*(gNodeStress(i,1)+gNodeStress(i,2)) + gNodeStress(i,6) ;
        gNodeStress(i,5) = 0.5*(gNodeStress(i,1)+gNodeStress(i,2)) - gNodeStress(i,6) ;
    end
    

    return

    function k = StiffnessMatrix( ie )
    % 计算单元刚度矩阵
    % 输入参数:
    % ie ---- 单元号
    % 返回值:
    % k ---- 单元刚度矩阵

    global gNode gElement gMaterial 
    k = zeros( 6, 6 ) ;
    E  = gMaterial( gElement(ie, 4), 1 ) ;
    mu = gMaterial( gElement(ie, 4), 2 ) ;
    h  = gMaterial( gElement(ie, 4), 3 ) ;
    xi = gNode( gElement( ie, 1 ), 1 ) ;
    yi = gNode( gElement( ie, 1 ), 2 ) ;
    xj = gNode( gElement( ie, 2 ), 1 ) ;
    yj = gNode( gElement( ie, 2 ), 2 ) ;
    xm = gNode( gElement( ie, 3 ), 1 ) ;
    ym = gNode( gElement( ie, 3 ), 2 ) ;
    ai = xj*ym - xm*yj ;
    aj = xm*yi - xi*ym ;
    am = xi*yj - xj*yi ;
    bi = yj - ym ;
    bj = ym - yi ;
    bm = yi - yj ;
    ci = -(xj-xm) ;
    cj = -(xm-xi) ;
    cm = -(xi-xj) ;
    area = (ai+aj+am)/2 ;
    B = [bi  0 bj  0 bm  0
          0 ci  0 cj  0 cm
         ci bi cj bj cm bm] ;
    B = B/2/area ;
    D = [ 1-mu    mu      0
           mu    1-mu     0
            0      0   (1-2*mu)/2] ;
    D = D*E/(1-2*mu)/(1+mu) ;
    k = transpose(B)*D*B*h*abs(area) ;    
    

    return

    function B = MatrixB( ie )
    % 计算单元的应变矩阵B
    % 输入参数:
    % ie ---- 单元号
    % 返回值:
    % B ---- 单元应变矩阵
    global gNode gElement
    xi = gNode( gElement( ie, 1 ), 1 ) ;
    yi = gNode( gElement( ie, 1 ), 2 ) ;
    xj = gNode( gElement( ie, 2 ), 1 ) ;
    yj = gNode( gElement( ie, 2 ), 2 ) ;
    xm = gNode( gElement( ie, 3 ), 1 ) ;
    ym = gNode( gElement( ie, 3 ), 2 ) ;
    ai = xjym - xmyj ;
    aj = xmyi - xiym ;
    am = xiyj - xjyi ;
    bi = yj - ym ;
    bj = ym - yi ;
    bm = yi - yj ;
    ci = -(xj-xm) ;
    cj = -(xm-xi) ;
    cm = -(xi-xj) ;
    area = (ai+aj+am)/2 ;
    B = [bi 0 bj 0 bm 0
    0 ci 0 cj 0 cm
    ci bi cj bj cm bm] ;
    B = B/2/area ;
    return

    function area = ElementArea( ie )
    % 计算单元面积
    % 输入参数:
    % ie ---- 单元号
    % 返回值:
    % area ---- 单元面积
    global gNode gElement gMaterial

    xi = gNode( gElement( ie, 1 ), 1 ) ;
    yi = gNode( gElement( ie, 1 ), 2 ) ;
    xj = gNode( gElement( ie, 2 ), 1 ) ;
    yj = gNode( gElement( ie, 2 ), 2 ) ;
    xm = gNode( gElement( ie, 3 ), 1 ) ;
    ym = gNode( gElement( ie, 3 ), 2 ) ;
    ai = xj*ym - xm*yj ;
    aj = xm*yi - xi*ym ;
    am = xi*yj - xj*yi ;
    area = abs((ai+aj+am)/2) ;
    

    return

    function AssembleStiffnessMatrix( ie, k )
    % 把单元刚度矩阵集成到整体刚度矩阵
    % 输入参数:
    % ie — 单元号
    % k — 单元刚度矩阵
    % 返回值:
    % 无
    global gElement gK
    for i=1:1:3
    for j=1:1:3
    for p=1:1:2
    for q=1:1:2
    m = (i-1)*2+p ;
    n = (j-1)*2+q ;
    M = (gElement(ie,i)-1)*2+p ;
    N = (gElement(ie,j)-1)*2+q ;
    gK(M,N) = gK(M,N) + k(m,n) ;
    end
    end
    end
    end
    return

    function egf = EquivalentGravityForce( ie )
    % 计算单元自重的等效节点力
    % 输入参数
    % ie ----- 单元号
    % 返回值
    % egf ----- 自重的等效节点力
    global gElement gMaterial

    area = ElementArea( ie ) ;
    h    = gMaterial( gElement( ie, 4 ), 3 ) ;
    ro   = gMaterial( gElement( ie, 4 ), 4 ) ;
    w    = area * h * ro ;
    egf  = -w/3 * [0; 1; 0; 1; 0; 1] ;
    

    return

    function es = ElementStress( ie )
    % 计算单元的应力分量
    % 输入参数
    % ie ----- 单元号
    % 返回值
    % es ----- 单元应力分量列阵(1×6): [sx, sy, txy, s1, s2, tmax]
    global gElement gDelta gMaterial

    es = zeros( 1, 6 ) ;   % 单元的应力分量
    de = zeros( 6, 1 ) ;   % 单元节点位移列阵
    E  = gMaterial( gElement(ie, 4), 1 ) ;
    mu = gMaterial( gElement(ie, 4), 2 ) ;
    D = [ 1-mu    mu      0
           mu    1-mu     0
            0      0   (1-2*mu)/2] ;
    D = D*E/(1-2*mu)/(1+mu) ;
    B = MatrixB( ie ) ;
    for j=1:1:3
        de( 2*j-1 ) = gDelta( 2*gElement( ie, j )-1 ) ;
        de( 2*j   ) = gDelta( 2*gElement( ie, j )   ) ;
    end
    es(1:3) = D * B * de ;
    es(6) = 0.5*sqrt((es(1)-es(2))^2 + 4*es(3)^2 ) ;
    es(4) = 0.5*(es(1)+es(2)) + es(6) ;
    es(5) = 0.5*(es(1)+es(2)) - es(6) ;
    

    return

    function SaveResults( file_out )
    % 显示计算结果
    % 输入参数:
    % file_out — 保存结果文件
    % 返回值:
    % 无

    global gNode gElement gMaterial gBC1 gDelta gNodeStress gElementStress
    save( file_out, 'gNode', 'gElement', 'gMaterial', 'gBC1', 'gDelta', 'gNodeStress', 'gElementStress' ) ;
    

    return

    展开全文
  • 这对程序读取和写入这些文件,以允许用户将 matlab 代码与此类程序进行交互。 -- 示例用法:输出半径为 10 埃的球形渐变 -- [XYZ] = 网格(-10:10); % 制作 3D 渐变input.密度矩阵 = ((X.^2 + Y.^2 + Z.^2).^0.5...
  • matlab如何读取并显示stl模型

    千次阅读 2020-12-27 19:45:06
    matlab函数如何读取并显示stl模型 利用stlread函数可方便的实现stl文件读取的操作,不过该实现只可读取binary格式的stl文件,并不能读取ASCII格式的stl文件,相应实现也很简单。不过本文的重点不在stl模型的读取上,...

    matlab函数如何读取并显示stl模型

    利用stlread函数可方便的实现stl文件读取的操作,不过该实现只可读取binary格式的stl文件,并不能读取ASCII格式的stl文件,相应实现也很简单。不过本文的重点不在stl模型的读取上,而在stl模型的显示上。

    patch绘制一个四边形

    matlab自带的patch函数可以实现多边形的绘制

    patch(X,Y,Z,C) 使用 XYZ 在三维坐标中创建多边形。

    X指的是多边形各顶点的x坐标构成的一维向量。Y,Z同理,C表示Color,通过改变C的参数改变面片的颜色。

    例如:

    创建一个红色正方形,顶点位于 (0,0)(1,0)(1,1)(0,1)。将 x 指定为顶点的 x 坐标,并将 y 指定为 y 坐标。patch 会自动将最后一个 (x,y) 坐标与第一个 (x,y) 坐标连接。

    x = [0 1 1 0];
    y = [0 0 1 1];
    patch(x,y,'red')
    

    红色正方形

    我们在绘制stl模型的时候实际上要一个不拉的绘制组成stl模型的所有三角面片。可以通过遍历的方法来实现,但通过改造数据的存储方式可直接调用patch(x,y,z)函数绘制出stl模型


    patch函数绘制两个三角形

    通过将 xyz指定为三行两列矩阵,创建两个三角形。

    x =		   	[95.5147094726563,91.7259368896484;94.4062042236328,95.5147094726563;89.4406509399414,89.4406509399414];
    y = 
    [17.7316799163818,17.7316799163818;0,17.7316799163818;0,0];
    z = [0.283457338809967,0.159092247486115;14.8238019943237,0.283457338809967;14.5865011215210,14.5865011215210];
    patch(x,y,z,'green');
    

    看上去很复杂。但把这组数据解读一下

    x=[第一个三角形的第一个点的x坐标,第二个三角形的第一个点的x坐标;...;第n个三角形的第一个点的x坐标;
       第一个三角形的第二个点的x坐标,第二个三角形的第二个点的x坐标;...;第n个三角形的第二个点的x坐标;
       第一个三角形的第三个点的x坐标,第二个三角形的第三个点的x坐标;...;第n个三角形的第三个点的x坐标;]
    y=[第一个三角形的第一个点的y坐标,第二个三角形的第一个点的y坐标;...;第n个三角形的第一个点的y坐标;
       第一个三角形的第二个点的y坐标,第二个三角形的第二个点的y坐标;...;第n个三角形的第二个点的y坐标;
       第一个三角形的第三个点的y坐标,第二个三角形的第三个点的y坐标;...;第n个三角形的第三个点的y坐标;]
    z=[第一个三角形的第一个点的z坐标,第二个三角形的第一个点的z坐标;...;第n个三角形的第一个点的z坐标;
       第一个三角形的第二个点的z坐标,第二个三角形的第二个点的z坐标;...;第n个三角形的第二个点的z坐标;
       第一个三角形的第三个点的z坐标,第二个三角形的第三个点的z坐标;...;第n个三角形的第三个点的z坐标;]
    

    只要按这样的格式对数据进行存储就可以使用patch函数直接绘制出stl模型。

    绘制两个三角形

    ver1,ver2, ver3 分别表示组成该三角面片的第一个顶点,第二个顶点,第三个顶点。

    x(:,i)=[ver1(1); ver2(1); ver3(1)]; % 第一个三角面片的三个点的x坐标
    y(:,i)=[ver1(2); ver2(2); ver3(2)]; % 第一个三角面片的三个点的y坐标
    z(:,i)=[ver1(3); ver2(3); ver3(3)]; % 第一个三角面片的三个点的z坐标
    

    x的第i列为第i个三角面片的第一个顶点的x坐标,

    ​ 第二个顶点的x坐标,

    ​ 第三个顶点的x坐标。

    y的第i列为第i个三角面片的第一个顶点的y坐标,

    ​ 第二个顶点的y坐标,

    ​ 第三个顶点的y坐标。

    z的第i列为第i个三角面片的第一个顶点的z坐标,

    ​ 第二个顶点的z坐标,

    ​ 第三个顶点的z坐标。

    patch函数额外参数

    matlab允许在调用patch()时提供一些额外的参数来改变透明度,面片颜色,线条样式等信息

    示例: patch(x,y,c,'FaceAlpha',.5,'LineStyle',':') 创建包含点线边的半透明多边形。

    在’FaceAlpha’后输入0-1的值表示透明度,范围 [0,1] 中的标量 - 在所有面上使用统一的透明度。值为 1 时完全不透明,值为 0 时完全透明;

    在’LineStyle’后输入线性参数,改变线条样式;

    matlab绘制stl模型

    [x,y,z,c] = stlread('C:\Users\Admin\Desktop\stlread\skeletonTest.STL');
            		backcolor = 'white';
            		patch(x,y,z,'w','FaceAlpha',.5,'EdgeColor','black');
            		set(gca,'xtick',0:10:200);  
           		 	set(gca,'ytick',0:10:90);
           		 	set(gca,'ztick',-20:10:140);
            		view(3);
    

    stl模型绘制

    展开全文
  • 读取.msh文件。 mesh = MshRead(filePath) mesh = MshRead(filePath,'typesToExtract',typesArray) filePath是.msh文件mesh是包含网格数据的结构体。 typesArray包含要提取的元素类型的列表。 请参阅以获取可用元素...
  • MATLAB 批量读取NC文件并转为TIF文件

    万次阅读 多人点赞 2019-03-19 10:32:18
    因为课题处理30年的降雨和蒸发的遥感资料(.NC格式),而想要在Arcgis中...版本:MATLAB_2018b clc; clear; %% 批读取NC文件的准备工作 datadir = 'G:\Global_P_ET\MSWEP_V2.2\'; %指定批量数据所在的文件夹 ...
  • Matlab 实现读取txt数据进行绘图

    千次阅读 2020-10-10 10:07:58
    %应用分格线(网格) h = legend([F2,F1,F3],'六分科技','千寻位置','标定数据'); %加一个图例,句柄h。 set(h,'fontsize',16,'edgecolor','w','textcolor','k') ; %对图例h进行精细设置 %text(indexQX(QXindex),...
  • 函数 [pet]=importfilemesh() 读取 <name> 并创建相应的 matlab-pde 格式的网格 (p, e, t),可以使用 matlab pde 工具箱处理。 函数 u=importfiledata() 读取 <name> 并创建可以使用 matlab pde 工具箱处理的相应 ...
  • mshread 加载 Fluent 网格文件 (*.msh)。 用法:(加载文件) [ msh_file_contents ] = mshread( 文件 ) [ msh_file_contents ] = mshread(目录); % 请求文件 可选 - 显示加载进度[ msh_file_contents ] = mshread( ...
  • 本文介绍使用matlab对遥感图像软件上截取的tiff格式图像进行图像提取和地理位置的提取。简单介绍matlab所使用的对应类和函数:geotiffread函数,GeographicCellsReference类,intrinsicToGeographic函数。最后使用...
  • 此文件只能读取 ply 格式的 3D 对象
  • 读取 NGS GEOID ASCII 网格
  • MATLAB 画颜色网格

    万次阅读 2016-06-12 18:38:28
    meshgrid用法meshgrid用于生成采样点的网格,下面的轮子可以直接采用
  • 读取 NGS GEOID 二进制网格并以矩阵形式输出大地水准面起伏、纬度、经度
  • matlab读取csv文件数据并绘图

    万次阅读 2018-05-11 21:18:00
    %读取csv数据文件 %disp(data); %disp函数:显示文本或数组 for i=1:75 if i x=data(i,1); y=data(i,2); plot(x,y,'rs'),axis([0 400 0 800]); hold on; else x=data(i,1); y=data(i,2); plot(x,y,'g.'),...
  • Matlab给图片加网格

    千次阅读 2020-01-02 19:43:20
    如何使用matlab给图片添加网格 一种思路是使用Matlab的meshgrid函数生成网格,再用plot函数绘制网格。 本文参考链接 代码如下: p = imread('F:\Data\building.png'); %读取图像 [mm,nn,~] = size(p); %获取图像的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,234
精华内容 893
关键字:

matlab网格读取

matlab 订阅