【发布时间】:2020-11-26 20:01:44
【问题描述】:
我想在matlab中读取多个文件并从每个文件中提取特定数据,然后从每个文件中提取的数据应该存储在多个文本文件中(txt文件的数量与mat文件的数量相同) .
示例:假设我有两个文件 FileA.mat 和 FileB.mat。从 filaA.mat 中提取的数据应处理并存储在 txt 文件 (FileA.txt) 中。 FileB.mat 的过程相同。
我为一个文件做了这个过程,但我如何为多个文件做这个过程?
每个文件包含多个数据。我需要为前 290 行提取变量(RigidBodies.Positions、RigidBodies.Rotations)中的数据。 应从每个文件中提取数据并存储在单独的 txt 文件中。
对于一个文件,读取数据,对其进行处理,然后将其存储在一个txt文件中:
load(strcat('Test.mat'));
pos=Test.RigidBodies.Positions(:,:,1:290);
b=Test.RigidBodies.Rotations(:,:,1:290);
for i = 1:290
c(:,:,i)=reshape(b(:,:,i),3,3);
rot(:,:,i)=rotm2eul(c(:,:,i));
end
trajdata=[pos,rot];
trajdata=reshape(trajdata,6,290)';
a=zeros(290,1);
trajdata=[trajdata,a];
save('data1.mat', 'data');
load('data1.mat')
dlmwrite('test1.txt', data, 'delimiter','\t','newline','pc')
这些是我发现要读取多个文件的内容:
mat = dir('*.mat');
for q = 1:length(mat)
load(mat(q).name);
data(q,:,:) = Testing0006.RigidBodies.Positions(:,:,1:290)
end
但是如何更改 for 循环内的文件名? 喜欢:
pos=**Test**.RigidBodies.Positions(:,:,1:290);
b=**Test**.RigidBodies.Rotations(:,:,1:290);
我怎样才能将第二个循环放在第一个循环中,就像我对 c 所做的那样,并在我的原始代码中腐烂?
感谢任何帮助。 谢谢
【问题讨论】:
-
您的问题已回滚到其初始形式。如果您有后续问题,请提出 新 问题,而不是重新利用当前问题 - 这样答案就保持相关性。欢迎,并享受这个网站!
标签: matlab