作者celestialgod (攸蓝)
看板MATLAB
标题Re: [问题]读取txt档後的判断式写法
时间Thu Jul 16 11:57:14 2015
直接改成用cell去做吧!
做法如下:
cd('yourTxtFile') % 到你存档案的路径去
files = ls(); % list all files in directory
files = files(~cellfun(@isempty, regexp(cellstr(files),'SPI\d*_\d*.txt')), :);
% capture the files you want
txtFiles = cellfun(@(x) dlmread(x), cellstr(files), 'UniformOutput', false);
% read all files
for i = 1:size(txtFiles,1)
x = txtFiles(i, 1);
for j = 1:size(x, 1)
if x(j, 5) < 0
% do something
end
end
end
※ 引述《cji4284503 (HearMe)》之铭言:
: 大家好,小弟是matlab新手,还请大家帮忙解惑
: 我遇到的问题不是如何读取txt档,而是後续写判断式的读档问题
: 前言
: 我总共有4860个txt档要跑,每一个txt档都是540X9的矩阵
: 档名是以SPI3_1、SPI3_2的规律排列
: 目的是希望汇出4860个SPIsum以及SPIavg值
: 所以先以零阵列的方式给SPIsum和SPIavg值
: 依序叫出4860个txt档这个步骤已经爬文解决
: 问题在 %这里的问题还没解决 这一行
: 附上部分程式码如下
: ------------------------------------------------------
: SPIsum=zeros(4860,1);SPIavg=zeros(4860,1);
: for z=1:4860
: filename=['SPI3_' num2str(z) '.txt'];
: eval(['load ' filename ' -ascii'])
: k=zeros(540,1);
: s=zeros(540,1);
: for i=3:540
: if SPI3_1(i,5)<0 %这里的问题还没解决
: k(i)=1;
: end
: if SPI3_1(i,5)<-1
: s(i)=1;
: end
: ------------------------------------------------------
: 这是第一个回圈,所以程式可以判别SPI3_1.txt里i列5行的数据
: 但到了第二个回圈,SPI3_1我不知道怎麽让它自动变成SPI3_2
: 让它继续判别下去
: 不知道有没有哪位大大可以帮个忙呢QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.248.13.191
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1437019038.A.101.html
1F:推 name0625: 感谢教学,又学到一招。 07/17 11:25