问题是我有一个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
我希望在最后一个绘图之后连接每个下一个绘图,以便所有绘图在一个绘图上组合但是连接在一起。 我希望你能理解我。非常感谢。
答案 0 :(得分:1)
你的代码应该作为你永远不应该在Matlab中编写代码的示例!的一个例子,你大量使用eval
使你几乎无法遵循你的代码。因此,我将放在这里,我认为可以解决您的问题,但是对于任何解释,您首先需要以适当的方式重写代码(您可能需要阅读this和this )。
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