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

    热门讨论 2012-10-17 16:51:00
    基于matlab读取stl文件并去除文件中的冗余点建立拓扑结构,方便后续操作。
  • 基于笛卡尔网格的三维流动数值模拟,其流场信息可以通过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

    展开全文
  • obj网格模型文件格式: “v x y z ...... f v1 v2 v3 ...... ” 此处先要去除其他的注释文字,使格式符合上述要求,然后改文件名为“file.dat" matlab中命令: A =importdata('file.dat'); B=find(strcmp(A...

    Love In December

     

     

    【点云处理】如何用MATLAB读取PLY或PCD点云数据?

     

     

    obj网格模型文件格式

      “v x y z
       ......
       f  v1 v2 v3
       ......
      ”

    此处先要去除其他的注释文字,使格式符合上述要求,然后改文件名为“file.dat"

     

    matlab中命令

    A =importdata('file.dat');
    
    B=find(strcmp(A.textdata,'v')==1)     //确定‘v' 开头的那些行
    
    x=A.data(B,1)
    
    y=A.data(B,2)
    
    z=A.data(B,3)
    
    scatter3(x,y,z);  //绘制点云
    

     

     

     

    展开全文
  • Matlab给图片加网格

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

    如何使用matlab给图片添加网格

    总体思路是使用Matlab的meshgrid函数生成网格,再用plot函数绘制网格。

    本文参考链接

    另一种相似的办法:Click here

    代码如下:

    p = imread('F:\Data\building.png'); %读取图像
    [mm,nn,~] = size(p); %获取图像的大小
    x = 0:nn/10:nn; %假设水平分成10格
    y = 0:mm/20:mm; %假设垂直分成20M = meshgrid(x,y); %产生网格
    N = meshgrid(y,x); %产生网格
    imshow(p); %先把原图片画出来
    hold on %保持原来的图,作为画布再在这上面添加网格
    plot(x,N,'y'); %画出水平横线。这里的'y'表示线条的颜色黄色
    %plot(M,y,'r'); %画出垂直竖线。'r'表示绿红色
    

    效果如下
    在这里插入图片描述

    关于plot画图的颜色:

    颜色 说明
    r 红色
    g 绿色
    b 蓝色
    y 黄色
    k 黑色
    w 白色
    展开全文
  • 对不同分辨率数据网格插值;对不重合区域取公共交集区%(1)读 .grd 文件clc; clear; close allflistobs = dir('D:\数据\UNH-GRDC\World Runoff Data\runoff_grd\*.grd');%(2)计算月平均值for i =2:13 % 留意读取...

    % 【摘要】读取.grd文件;对不同分辨率数据网格插值;对不重合区域取公共交集区

    %(1)读 .grd 文件

    clc; clear; close all

    flistobs = dir('D:\数据\UNH-GRDC\World Runoff Data\runoff_grd\*.grd');

    %(2)计算月平均值

    for i =2:13 % 留意读取的文件序号

    filename = flistobs(i).name;

    delimiterIn = ' '; % 设置定界符,从grd文件复制

    headerlinesIn = 6; % 设置需要跳过的行数,跳过6行,从第7行开始

    datastrct = importdata(filename,delimiterIn,headerlinesIn);

    rof = datastrct.data;

    rof = flip(rof); % 数据可能是倒置的,可以通过pcolor查看

    rof(rof == -9999) = NaN; % 替换缺省值为 Nan

    cmprof_mo{i-1} = rof; % 以cell格式存储

    end

    %(3)计算多年平均值

    temp = importdata(flistobs(1).name,delimiterIn,headerlinesIn) % 注意文件在文件夹中的序号

    temp.data(temp.data == -9999) = nan;

    cmprof_yr = flip(temp.data);

    %(4)读经纬度坐标

    fpath = 'D:\Models_Output\Clm45Sp\lnd\hist\';

    flistsim = dir([fpath,'*.nc']);

    fname = flistsim(1).name;

    xx = ncread([fpath,fname],'lon');

    yy = ncread([fpath,fname],'lat');

    for m = 1:length(xx)

    if xx(m) >= 180

    xx(m) = xx(m) - 360;

    else

    continue

    end

    end

    xx = [xx(145:end);xx(1:144)]; % 将经度后半段(>=180)拼接到前面

    [lonsim,latsim] = meshgrid(xx,yy);

    %(5)空间插值(最邻近插值法)

    x = -180:0.5:179.5;

    y = -55.5:0.5:82.5;

    [lonobs,latobs] = meshgrid(x,y);

    upcmprof_yrly = griddata(lonobs(:),latobs(:),cmprof_yr(:),lonsim,latsim,'nearest');

    %(6)导入模拟值数据

    load('simres.mat')

    %(7)画图

    subplot(2,2,1)

    h1 = pcolor(rofsim_yrly)

    h1.LineStyle = 'none';

    colorbar;

    subplot(2,2,2)

    h2 = pcolor(upcmprof_yrly)

    h2.LineStyle = 'none';

    colorbar;

    subplot(2,2,3)

    h3 = pcolor(rofsim_yrly-upcmprof_yrly)

    h3.LineStyle = 'none';

    colorbar;

    subplot(2,2,4)

    hist(rofsim_yrly(:) - upcmprof_yrly(:),500);

    %(8)计算两者公共区域(利用Nan 与 非Nan 的计算结果为 Nan 确定交集区域)

    comreg = rofsim_yrly - upcmprof_yrly;

    rf_simul = rofsim_yrly(~isnan(comreg));

    rf_obser = upcmprof_yrly(~isnan(comreg));

    %(9)计算评价指标

    MAE = mean(abs(rf_obser-rf_simul))

    RMSE = sqrt(mean((rf_obser-rf_simul).^2))

    noindex = find(rf_obser ~= 0);

    delta = abs(rf_obser-rf_simul);

    MAPE = mean(delta(noindex)./rf_obser(noindex))

    R = corr(rf_obser,rf_simul,'type','Pearson')

    展开全文
  • 需要从剖分好的网格数据文件中,找到所需关系,按照规则,施加边界条件并保存为新的文件以供后续使用。 主要涉及到的有:索引规律迭代,matlab文件读写,etc. --------------------------------------- Note:好久...
  • 在很多时候想看看深度图或灰度图的三维效果,点云的方法固然更直接,但复杂不易上手,而用Matlab的三维网格显示则方便快速了许多,下面来展示一下matlab里面用meshgrid和mesh来生成图片的三维网格的过程: ...
  • matlab在图片上画出网格

    万次阅读 2017-02-26 21:44:18
    在对图像进行处理时,时常需要将图片划分成若干矩形块进行处理,在作图表示时,如何在图片上显示网格呢?下面给出一种matlab实现的简单方法:    p = imread('football.jpg'); %读取图像  [mm,nn,~] = size(p)...
  • matlab工具箱,处理三角网格格式的三维物体。三角网格格式是指存储了物体的顶点和三角面片的顶点索引;工具箱包括读取,平滑,计算距离等等很多基本的函数,对于初学者非常有用。
  • 二维图和三维图绘制连续、离散、曲面以及三维体数据图格式和注释添加标签、调整颜色、定义坐标轴范围、应用光照或透明度、设置照相机视图图像读取、写入、显示和修改图像打印和保存打印和导出为标准文件格式图形对象...
  • 转载▼     ... %读取图像 I=imresize(p,[256,256]); %将图像的尺寸调整为【256*256】 rs = size(I, 1); cs = size(I, 2);%取图像的行列数 sz = 4;%设置块的大小 ch = sz; cw = sz;
  • filename文件为.grd的网格文件,里面的值为浮点数,直接读取的时候出错,只能读取第一个浮点数,而且自动转化为了整数。 在matlab命令行里输入open arcgridread.打开arcgridread.m文件,看它内部实现代码,修改...
  • matlab开发-plyreadm

    2019-08-22 10:04:02
    matlab开发-plyreadm。此文件可以读取三维多边形网格
  • MATLAB教程

    2015-04-15 09:58:51
    三、 7.2.3 曲面与网格图命令 31 四、 7.2.4 三维数据的其他表现形式命令 35 第 3 节 通用图形函数命令 41 一、 7.3.1 图形对象句柄命令 41 二、 7.3.2 轴的产生和控制命令 51 三、 图形句柄操作命令 51 四、 7.3.4 ...
  • matlab开发-grdwrite2

    2019-08-23 12:13:39
    matlab开发-grdwrite2。使用内置的netcdf功能编写网格文件,由gmt(通用映射工具)读取
  • matlab2019a

    2019-04-16 11:32:01
    MATLAB Online:通过 MATLAB Online 与 Raspberry Pi 硬件板通信 iOS 和 Android 传感器:在您的设备没有网络访问权限时获取传感器数据 iOS 和 Android 传感器:将传感器日志从设备上传到 MATLAB Drive 10、高级软件...
  • Delaunay三角网格生成

    千次阅读 2017-12-03 11:32:51
    本文给出了Delaunay三角网格的生成算法,写本算法的本意是能利用Delaunay三角网格构成k阶最紧邻图,进而为Chameleon变色龙算法的实现打下基础,不足的地方请大家批评,具体Delaunay三角...fileID = fopen('D:\matlabF
  • 三、 7.2.3 曲面与网格图命令 31 四、 7.2.4 三维数据的其他表现形式命令 35 第 3 节 通用图形函数命令 41 一、 7.3.1 图形对象句柄命令 41 二、 7.3.2 轴的产生和控制命令 51 三、 图形句柄操作命令...
  • 三维蘑菇的网格数据文件,格式为.stl。 可以使用Python,C++,Matlab等软件进行读取编程使用,用于构建3D模型。
  • 三维扭结的网格数据文件,格式为.stl。 可以使用Python,C++,Matlab等软件进行读取编程使用,用于构建3D模型。
  • 一个病毒的三维网格数据文件,格式为.stl。 可以使用Python,C++,Matlab等软件进行读取编程使用,用于构建3D生物模型。
  • MATLAB图形图像处理

    热门讨论 2011-01-03 12:20:11
    8.7.2 图像文件的读取 8.7.3 图像文件的存储 8.7.4 图像数据类型的转换 8.7.5 图像文件格式的转换 第九章 MATLAB 图像显示与色彩 9.1 图像显示 9.1.1 imshow 函数 9.1.2 显示索引图像 9.1.3 显示灰度图像 ...
  • VC++ matlab图像处理

    2013-09-15 15:17:54
    8.7.2 图像文件的读取 8.7.3 图像文件的存储 8.7.4 图像数据类型的转换 8.7.5 图像文件格式的转换 第九章 MATLAB 图像显示与色彩 9.1 图像显示 9.1.1 imshow 函数 9.1.2 显示索引图像 9.1.3 显示灰度图像 ...
  • 概述了为FVCOM创建必要的非结构化网格文件的过程,包括开放边界。 短信 为避免重复,该手册对如何创建非结构化网格,内插测深图以及如何导出相关文件(第20.2节)...可以使用MATLAB fvcom-toolbox函数读取此导出的.
  • Matlab语音频谱分析,滤波

    千次阅读 2020-06-02 17:30:17
    第一段程序:读取录制的一段音频进行时域频域分析并生成图片。 %123.m4a是我录制的音频文件名,使用时要改成自己的音频文件名 [yy,fs]=audioread('123.m4a');%读入音频文件 grid on; %网格线 hold on; %设置图像...
  • Matlab对ABAQUS结果的后处理

    千次阅读 2020-02-15 21:08:48
    最近有人找过来,想做一个对...1.读取INP文件—得到网格信息 一定要对ABAQUS 的INP文件十分熟悉,才能有效的提取想要的数据。 为什么要读网格信息呢?要画云图,就要知道网格信息,画出网格来,然后再补充上各...
  • matlab delaunary 三维点云三角化

    热门讨论 2009-06-26 17:05:09
    可以读取三维点云,生成三角网格,并绘制三维图像.
  • 8.7.2 图像文件的读取 8.7.3 图像文件的存储 8.7.4 图像数据类型的转换 8.7.5 图像文件格式的转换 第九章 MATLAB 图像显示与色彩 9.1 图像显示 9.1.1 imshow 函数 9.1.2 显示索引图像 9.1.3 显示灰度图像 ...
  • 8.7.2 图像文件的读取 8.7.3 图像文件的存储 8.7.4 图像数据类型的转换 8.7.5 图像文件格式的转换 第九章 MATLAB 图像显示与色彩 9.1 图像显示 9.1.1 imshow 函数 9.1.2 显示索引图像 9.1.3 显示灰度图像 ...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

matlab网格读取

matlab 订阅