带着飞行器的胡萝卜 2021-11-14 16:46 采纳率: 80%
浏览 146
已结题

MATLAB批量读取处理.txt 文件

现在有一个文件夹里面有2000个txt(如果是.ovf文件,内容是matlab可读的形式)文件,我想批量读取这2000个txt文件,并把这些矩阵里面的点和我的物理模型相对应,我的物理模型是一个1200x40
x1的这样一个长方体网格,现在我需要建立一个坐标系,把这些矩阵里面的点对应到这个坐标里面来,然后提取矩阵里面的数据。该怎样编程呢?还请各位帮帮忙。

  • 写回答

3条回答 默认 最新

  • 技术专家团-Joel 2021-11-14 18:21
    关注

    逻辑有点乱,我给你一个读取文件的方法,比如说你的2000个文件有如下规律file0001.txt、file0002.txt、file0003.txt……file2000.txt
    然后matlab读入的办法是:

    folder = 'myfolder'; %你的文件夹名字
    Data = cell(2000,1); % 储存数据用的cell
    for i = 1:1:2000
    filename = ['file',sprintf('%04d',i)];
    a = load([folder,'\',filename]); %载入你的数据(假设你的数据是2000*40行,若干列,这个你没给出我也没法确定)
    b = reshape(a,2000,40,size(a,2));
    Data{i,1} = b;
    end
    

    我大致根据你的描述给出一个代码框架,题主需要详细告诉txt文件内容格式,以及处理的过程,比如你的网格是什么样子的等等,不然也没法具体问题具体分析

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 关注

    您好!感谢您的回复,这2000个文件是这样命名的规律是DW-150-8-3D-01-Oxs_TimeDriver-Magnetization-01-0002709.omf.txt,DW-150-8-3D-01-Oxs_TimeDriver-Magnetization-02-0004065.omf.tx。t我的数据是由另外一个软件算出来的是2000个txt(里面包括三列,每一列都有48000个数据且这三列分别是mx,my,mz).我的物理模型是一个3000x100x10(xyz)的长方体,现在我把这个长方体用2.5x2.5x10的小长方体来划分他们,现在就相当于在x,y,z方向分别有是1200,40和1个格子,其中每一个格子里面都有mx,my,mz,我刚开始是把这2000个矢量数据读进去,然后建立坐标系把这2000个txt文件里面的数据对应到我的物理模型上去,这样我就可以任意知道mx,my,mz对应我模型的位置,我这样问不知道能不能理解

    评论
  • 关注

    谢谢您的帮助,给了我很大的启发,这下面是我的程序,
    clear
    clc
    close all

    %% txt文件路径
    path = 'E:\222\txt';

    %% 找出所给文件目录内的所有txt文件
    filenames = dir([path '*.txt']);

    %% txt文件路径加入工作路径
    addpath(path);

    %% 循环读取文件
    for ii = 1:length(filenames)
    filename = filenames(ii).name;
    Data = table2array(readtable(filename));% 读取文件
    Files{ii,1} = filename;
    eval( ['Data_' num2str(ii) ' = Data(1:end-2,:);'] );% 数据名按照 Data_1、Data_2、Data_3……的顺序排列
    AMat(:,ii) = Data(1:end-2,6);
    eval( ['matrix_' num2str(ii) ' =reshape(AMat(:,1),40,1200)']);%把数据变成40x1200的矩阵
    end % 数据名对应的文件名依次为 Files{1}、Files{2}、Files{3} ……
    diffAMat = AMat - repmat( AMat(:,end),1,length(filenames))
    Nx=1200;
    Ny=40;
    Nz=1;
    cellsizeX=2.5;cellsizeY=2.5;cellsizeZ=10;
    X0=[0.5cellsizeX:cellsizeX:cellsizeXNx-0.5cellsizeX];
    Y0=[0.5
    cellsizeY:cellsizeY:cellsizeYNy-0.5cellsizeY];
    Z0=[0.5cellsizeZ:cellsizeZ:cellsizeZNz-0.5*cellsizeZ];
    [X,Y,Z]=meshgrid(X0,Y0,Z0);
    因为我的所有文件都在一个文件夹里面,所以我是这样读取的,先把所有文件读取出来,转化为矩阵,然后根据网格大小设置坐标系,不知道这里有什么错误呢,还有,如果我想对这些矩阵进行批量处理该如何编呢,比如取相同的行,相同的列,或者取这些矩阵同一位置的元素?

    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月22日
  • 已采纳回答 11月14日
  • 创建了问题 11月14日

悬赏问题

  • ¥60 悬赏求解,通过实时现场摄像头的视频图像识别其他对家打出的麻将牌,识别麻将牌,识别牌墙位置,通过识别对家打出了什么牌
  • ¥15 关于#GPU jetson#的pcie驱动开发问题,如何解决?
  • ¥15 stm32f103zet6 串口5无法收发数据
  • ¥15 关于C语言使用线程队列实现多线程并发
  • ¥15 这个运行,错误在哪里呀,大家看看吧,教导我
  • ¥15 advanceinstaller对话框设置
  • ¥100 正常上网,内部网页无法打开
  • ¥15 组件库引入并使用在若依框架未展示
  • ¥149 关于#使用python 的Flash Echarts+ajax+mysql动态数据实现饼图#的问题,请各位专家解答!
  • ¥15 RichTextBox中追加文本时报错