Matlab 保存到for循环中的单独变量

Matlab 保存到for循环中的单独变量,matlab,Matlab,下面是我的代码,我想计算我的“inp”和a矩阵中每一行之间的汉明距离,并将这些汉明距离保存在不同的变量中: 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)是错误的部分。然而,我无法解决它。我要做的

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

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”绑定,因为它是我的循环。有没有办法解决这个问题。

看来你把打印和变量赋值搞混了。一般情况下:计算、分配变量,然后打印

  • 虽然Matlab不需要这样做,但初始化存储距离的位置是一个很好的做法。我用下面的
    dist=zero(4,1)
    来做
  • 将每个距离存储在数组的第i个元素
    dist(i)
  • 然后,打印带有i和dist(i)的格式化字符串
  • 您不需要
    i=i+1
    ,for循环会为您递增


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

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

然后,不引入数组
dist

好吧,我想要的是将每个距离保存在不同的变量中,当我调用其中一个变量时,我得到它的值,即汉明距离。你的意思是你更喜欢将距离存储在变量b、c、d、e中,而不是将它们存储在数组中?我劝你不要那样做。但如果愿意,可以将数组的内容分配给如下变量:。即:put
distcell=num2cell(dist);[b c d e]=distcell{:}在循环之后。我知道这并不可取,但我正在考虑使用单独的变量,因为我需要比较距离。例如,如果我有一个距离数组dist=[2 2 3 5],并且想要找到这个数组及其索引的最小值,我使用“[mindist,ind]=min(dist(:)”,但这只给了我2,它是最小值,索引“1”,知道索引1和2具有相同的最小距离。所以,如果我找到一个可以检索所有最小值的索引的函数,我会选择它。
 fprintf('dist%d = %f \n', i, pdist2(inp,D,'hamming'))