Как индексировать и отображать содержимое в массиве ячеек на одном графике? - PullRequest
0 голосов
/ 06 декабря 2011

Я надеюсь, что кто-то может помочь мне с этой проблемой.

Изначально я строил графики для массивов 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 , сгенерированные с использованием различных w * , используя массивы ячеек oLmag_c и w_c соответственно, так что oLmag_c {1} соответствует w_c {1} и так далее. Теперь я хочу построить все соответствующие oLmag's и w's в одном графике.

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 голосов
/ 06 декабря 2011

Во втором кодовом блоке hold вызывается дважды.После запуска удерживайте все , затем второй раз в первой итерации цикла

if(i==1); hold; end  

Второй вызов hold переключает состояние удержаниятекущие оси.Это, вероятно, объясняет, почему вы получаете только один сюжет.

Я бы изменил ваш подход к вызову удержание или _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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...