嗨,我有多个文本文件名ABR1.txt,ABR2.txt,....ABR1000.txt
我已经写下了用于距离计算的matlab代码。因此,我希望当前文件夹中存在的所有文件都应在此代码中运行,并提供单独的输出文件。因此,我正在尝试,但是只有一个ABR1.txt
在提供输出。请检查一下,让我知道我能做什么?
clc
clear all
for n=1:2
filename = ['ABR', int2str(n), '.txt'];
Pop=load(filename);
[m n] = size(Pop);
n = m;
Dist = zeros(m, n);
for i = 1 : m
for j = 1 : n
Dist(i, j) = sqrt((Pop(i, 1) - Pop(j, 1)) ^ 2 + ...
(Pop(i, 2) - Pop(j, 2)) ^ 2);
end
end
Dist
q=(1-(3/8)*Dist)
filename = ['ABRa', int2str(n), '.txt'];
save(filename, 'q', '-ascii');
end
答案 0 :(得分:0)
您正在将变量“ n”用作循环/文件计数器以及读取的矩阵的大小。我不知道您正在加载的数据是什么样的,但是如果“ n”的值最终为1,那么您将只在其中写入带有“ 1”的文件名。您实际上可能写过两次,但是两次都有相同的文件名。
我将从将for循环更改为使用其他变量名称开始:
for iFile = 1:2
然后在文件名中进行更改:
filename = ['ABRa', int2str(iFile), '.txt'];
此外,如果您确实要读取1000个文件,则应循环运行1000次,而不要运行两次:
for iFile = 1:1000