Matlab 保存到for循环中的单独变量
下面是我的代码,我想计算我的“inp”和a矩阵中每一行之间的汉明距离,并将这些汉明距离保存在不同的变量中: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)是错误的部分。然而,我无法解决它。我要做的
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)的格式化字符串
- 您不需要
,for循环会为您递增i=i+1
请注意,如果打印输出是唯一的目标,则不需要将结果存储在dist中。你可以这么做
fprintf('dist%d = %f \n', i, pdist2(inp,D,'hamming'))
然后,不引入数组
dist
好吧,我想要的是将每个距离保存在不同的变量中,当我调用其中一个变量时,我得到它的值,即汉明距离。你的意思是你更喜欢将距离存储在变量b、c、d、e中,而不是将它们存储在数组中?我劝你不要那样做。但如果愿意,可以将数组的内容分配给如下变量:。即:putdistcell=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'))