现在有一个文件夹里面有2000个txt(如果是.ovf文件,内容是matlab可读的形式)文件,我想批量读取这2000个txt文件,并把这些矩阵里面的点和我的物理模型相对应,我的物理模型是一个1200x40
x1的这样一个长方体网格,现在我需要建立一个坐标系,把这些矩阵里面的点对应到这个坐标里面来,然后提取矩阵里面的数据。该怎样编程呢?还请各位帮帮忙。
逻辑有点乱,我给你一个读取文件的方法,比如说你的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.5cellsizeY:cellsizeY:cellsizeYNy-0.5cellsizeY];
Z0=[0.5cellsizeZ:cellsizeZ:cellsizeZNz-0.5*cellsizeZ];
[X,Y,Z]=meshgrid(X0,Y0,Z0);
因为我的所有文件都在一个文件夹里面,所以我是这样读取的,先把所有文件读取出来,转化为矩阵,然后根据网格大小设置坐标系,不知道这里有什么错误呢,还有,如果我想对这些矩阵进行批量处理该如何编呢,比如取相同的行,相同的列,或者取这些矩阵同一位置的元素?