在for循环MATLAB中的每次迭代中更改变量名称

时间:2013-03-14 14:36:51

标签: matlab for-loop

我有大数组P,它在每次迭代中改变大小和值。我需要能够更改输出数组的标题以匹配给定的迭代,即对于bin 1.4,我希望输出为p1.4或p14。

有人可以帮忙吗?

for bin = 1:0.1:2;
    rows = find(DAT(:,27) > bin);
    p{bin} = DAT(rows,:);
end

2 个答案:

答案 0 :(得分:4)

如果我理解正确,代码是

for bin = 1:0.1:2;
    rows = find(DAT(:,27) > bin);
    current_p = DAT(rows,:);
    eval(sprintf('p%0.f=current_p;', bin * 10));
end

但你为什么需要这个呢?考虑使用像containers.Map:

这样的更智能的容器
p = containers.Map('KeyType', 'double', 'ValueType', 'double')    
for bin = 1:0.1:2
     rows = find(DAT(:,27) > bin);
     p(bin) = DAT(rows,:);
end
disp(p(1.2))

它可能更方便。

答案 1 :(得分:1)

怎么样

bins = 1:0.1:2;
for ii = 1: numel(bins)
    bin = bins(ii);
    rows = find( DAT(:,27) > bin );
    p{ii} = DAT(rows,:);
end