如何在同一个图中索引和绘制单元格数组中的内容?

时间:2011-12-06 17:56:09

标签: matlab for-loop

我希望有人可以帮我解决这个问题。

最初我正在使用以下脚本为 w oLmag 数组进行绘图。

figure(1)
for i=1:dsize(1)
    subplot(2,1,1);
    semilogx(w,oLmag(i,:),color(i));
    if(i==1), hold; end
end

现在我已经分别使用单元格数组 oLmag_c w_c 收集了使用不同 w 生成的所有 oLmag oLmag_c {1} 对应于 w_c {1} ,依此类推。现在我想在一个图中绘制所有相应的 oLmag的 w的

hold all;
for i=1:dsize(1)
    for k=1:length(w)
        subplot(2,1,1);
        semilogx(w{k},oLmag{k}(i,:),color(i));
        if(i==1); hold; end
     end;
 end

这似乎并不是将所有情节整合在一起并且只产生一个情节。另外我想在每个情节上都有传奇,例如1,2 ...说1代表 w_c {1} oLmag_c {1} 情节等等。

1 个答案:

答案 0 :(得分:0)

在第二个代码块中, hold 被调用两次。一旦开始时保持所有,那么在循环的第一次迭代中第二次

if(i==1); hold; end  

第二次调用按住切换当前轴的保持状态。这可能解释了为什么你只得到一个情节。

我会改变你在开始时调用 hold on 或_hold(gca,'on')的方法,并删除第二个调用以保存在嵌套循环中(第二个代码块的第6行) )。

因此,在添加样本数据并删除第6行后,代码块可能会读取类似

的内容
%# First setup the axes and set 'hold on'
hAxes(1) = subplot(2,1,1)
hAxes(2) = subplot(2,1,2)
hold(hAxes,'on'); %# Using the function form of hold instead
%#hold all 

%# some sample data
w={[1 2] [3 4] [4 5]}; 
oLmag={[22.9983 16.8412; 22.3405 16.1763], ...
       [16.7192 14.0807;14.2588 11.4160], ...
       [12 13;15 14]}; 

 %# nested loops for plotting
 for k=1:length(oLmag) 
    for i=1:length(oLmag{k}) 
        xy=[w{k};oLmag{k}(i,:)]; 
        subplot(2,1,1);
        semilogx(w{k},oLmag{k}(i,:)); 
        subplot(2,1,2);
        %# add plots to second axes here...

        %#if(i==1);hold;end; %# remove extra call to hold
    end;
end