保存以分隔for循环中的变量

时间:2015-03-22 02:53:56

标签: matlab

下面是我的代码,我想计算我的“inp”和矩阵中每一行之间的汉明距离,并将这些汉明距离保存在不同的变量中。:

a=[1 1 1 1;1 0 1 1;1 1 0 0; 1 0 0 1]
inp=[0 1 0 1]
for i = 1:4
    D=a(i,:);
    ('dist%d',i)=pdist2(inp,D,'hamming')
    fprintf('\n')
    i=i+1;
end

此代码无效,我知道('dist%d',i)是错误的部分。但是,我无法解决它。我想要做的是获得如下结果:dist1 =,dist2 =,dist3 =,dist4 =。这就是为什么我用“i”绑定它,因为它是我的循环。任何想法如何解决。

1 个答案:

答案 0 :(得分:0)

您似乎对打印与变量分配感到困惑。通常:评估,分配给变量,然后打印。

  • 虽然Matlab不要求这样做,但初始化存储距离的地方是一个很好的做法。我是通过以下dist = zeros(4,1)来完成的。
  • 将每个距离存储在dist(i)(数组的第i个元素)中。
  • 之后,使用i和dist(i)打印格式化的字符串。
  • 您不需要i=i+1,for循环会为您增加。

a=[1 1 1 1;1 0 1 1;1 1 0 0; 1 0 0 1];
inp=[0 1 0 1];
dist = zeros(4,1);
for i = 1:4
    D=a(i,:);
    dist(i)=pdist2(inp,D,'hamming');
    fprintf('dist%d = %f \n', i, dist(i))
end

请注意,如果打印输出是唯一目标,则不必将结果存储在dist中。你可以做到

 fprintf('dist%d = %f \n', i, pdist2(inp,D,'hamming'))

然后,不引入数组dist