多个绘图coombine并在matlab中连接

时间:2017-06-24 15:05:37

标签: matlab plot matlab-figure

问题是我有一个for循环如下:

for i=1:(rx * tx)    
    for j=1:(rx * tx)
        eval(sprintf('t_%d_%d_t = corrcoef(m_a%d_abs, m_b%d_abs)', pairs(i), pairs(j), pairs(i), pairs(j)));
        eval(sprintf('t_%d_%d = t_%d_%d_t(1, 2)', pairs(i), pairs(j), pairs(i), pairs(j)));

        if(eval(sprintf('t_%d_%d', pairs(i), pairs(j))) >= max_cor)
            eval(sprintf('figure(''name'', ''a (%d) <> b (%d)'')', pairs(i), pairs(j)));
            eval(sprintf('plot(a%d, ''r'')', pairs(i)));
            hold on;
            eval(sprintf('plot(b%d, ''b'')', pairs(j)));
            xlabel('Tones (f)');
        end
    end
end

这个for循环根据if语句绘制新窗口中的每个Plot,如此enter image description here

我希望在最后一个绘图之后连接每个下一个绘图,以便所有绘图在一个绘图上组合但是连接在一起。 我希望你能理解我。非常感谢。

2 个答案:

答案 0 :(得分:1)

你的代码应该作为你永远不应该在Matlab中编写代码的示例!的一个例子,你大量使用eval使你几乎无法遵循你的代码。因此,我将放在这里,我认为可以解决您的问题,但是对于任何解释,您首先需要以适当的方式重写代码(您可能需要阅读thisthis )。

c = 0;
for k=1:(rx * tx)    
    for m=1:(rx * tx)
        eval(sprintf('t_%d_%d_t = corrcoef(m_a%d_abs, m_b%d_abs)', pairs(k), pairs(m), pairs(k), pairs(m)));
        eval(sprintf('t_%d_%d = t_%d_%d_t(1, 2)', pairs(k), pairs(m), pairs(k), pairs(m)));
        if(eval(sprintf('t_%d_%d', pairs(k), pairs(m))) >= max_cor)
            nx = eval(sprintf('numel(a%d)', pairs(k)));
            X = c+1:(c+nx);
            eval(sprintf('plot(X,a%d, ''r'')', pairs(k)));
            hold on;
            eval(sprintf('plot(X,b%d, ''b'')', pairs(m)));
            c = c+nx;
            xlabel('Tones (f)');
        end
    end
end

答案 1 :(得分:0)

figure命令移出循环,只为所有绘图打开一个数字:

figure;

for i=1:(rx * tx)    
    for j=1:(rx * tx)
        eval(sprintf('t_%d_%d_t = corrcoef(m_a%d_abs, m_b%d_abs)', pairs(i), pairs(j), pairs(i), pairs(j)));
        eval(sprintf('t_%d_%d = t_%d_%d_t(1, 2)', pairs(i), pairs(j), pairs(i), pairs(j)));

        if(eval(sprintf('t_%d_%d', pairs(i), pairs(j))) >= max_cor)
            eval(sprintf('(''name'', ''a (%d) <> b (%d)'')', pairs(i), pairs(j)));
            eval(sprintf('plot(a%d, ''r'')', pairs(i)));
            hold on;
            eval(sprintf('plot(b%d, ''b'')', pairs(j)));
            xlabel('Tones (f)');
        end
    end
end