在Matlab中加载.txt文件的范围检查失败

时间:2017-05-24 21:06:25

标签: matlab csv if-statement

我一直在努力编写代码来读取.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命令。

谢谢。

2 个答案:

答案 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