【发布时间】:2016-10-03 22:38:46
【问题描述】:
我正在创建一个脚本,它将读取一个包含数字的文本文件,我们称之为“numbers.txt”:
1234
20324
221
etc.
我想将文本文件中的第一个数字与第二个数字相乘并减去 1,第二个与第三个数字相乘,以此类推,直到在每个步骤中将整数相乘并减去 1。问题是当它运行时,它会输出它得到的所有值,而我只想要每行的最终产品并将其放入一个变量中。我该怎么做?
这是我的代码:
fid = fopen('numbers.txt');
while ~feof(fid);
fgetlfid = fgetl(fid);
c = 1;
for i = fgetlfid;
c = i*c-1
end
end
【问题讨论】:
-
你应该在
c = i*c-1后面加一个分号来禁止输出。然后在最后放一个disp(c),显示最终值 -
感谢您的回复!我已经这样做了,但这也显示了每个数学运算的输出,而我只需要每行的最后一个(该行上的所有数字都乘以和减去 1)
-
几个问题:1)文件中的所有数字都是正整数吗? 2) 整个文件是否可以立即放入内存?如果是这样,您也许可以使用
dlmread、textscan等(A = dlmread('numbers.txt');或fID = fopen('numbers.txt'); B = textscan(fID,'%u'); B = B{1}; fclose(fID);)来加载它 -
它只是正整数,它们都适合内存。
-
@anters - 上面的实现与您的描述略有不同。第一步应该是第一个数字乘以 1 并减去 1(如您的代码)还是第一个数字乘以第二个数字并减去 1(如您的描述)?
标签: matlab for-loop while-loop