我一直在努力编写代码来读取.txt数据。我在一个目录中,所有文件名都是'img0001.txt'到'img4200.txt'。每个文件都是一个相同大小的二维数组(480x640),最终我想填充一个三维数据立方体,但首先我需要能够读入所有数据。
for i = 1:4200
i
if i<10
A = csvread(['img000',num2str(i),'.txt']);
elseif 10<=i<100
A = csvread(['img00',num2str(i),'.txt']); ***
elseif 100<=i<1000
A = csvread(['img0',num2str(i),'.txt']);
else i>=1000
A = csvread(['img',num2str(i),'.txt']);
end
end
代码打印i=100
,然后给我一条错误消息,指出我在添加***的行中找不到的文件。代码正在查找不存在的文件img00100.txt
,但我不确定它为什么会这样做。
我一直在玩不同版本的if,elseif语句和大于和小于运算符。我也尝试过使用eval和load命令。
谢谢。
答案 0 :(得分:1)
检查范围的条件是错误的。你应该写如下:
elseif 10 <= i && i < 100
您计算的内容如下(针对i == 100
进行了解释):
10 <= i < 100
&lt; =&gt; (10 <= i) < 100
&lt; =&gt; (1) < 100
&lt; =&gt; 1
请注意,许多编程语言都是这种情况(C ++,java,js,...)。
答案 1 :(得分:1)
m7913d的答案解释了你的if语句的逻辑,但避免混淆的一个好方法是使用sprintf
完全删除if语句。
for i = 1:4200
filenum = sprintf('%04d', i); % Zero pads the number e.g. 59 => 0059
disp(['i =', filenum]) % Display current i
A = csvread(['img', filenum, '.txt']); % Load CSV
end