2013-03-23 3 views
0

У меня есть в Simulink a Scope с мультиплексорным блоком Mux (я хочу нарисовать кратность wavaforms на одном графике). После моделирования мне нужно экспортировать его в определенную форму (цвет фона, ширину линий и т. Д.) В файлы eps/pdf и png.Скрипт Matlab для создания и экспорта графиков

Реальная проблема:

  • цвета легенды неверны.

Моя мечта:

  • начала моделирования в Simulink (нажмите F5, чтобы начать)
  • затем вызвать мою собственную функцию (скрипт), чтобы экспортировать его (например, set_and_export (метка х, этикетка y, легенда волна 1, легенда волны 2, .., легенда волны x))

Окончательное состояние должно выполнить мою мечту.

Мой м Файл:

% Get the data from Simulink 
% First column is the time signal 
% in Scope in Simulink : Array with time 
[nothing, NumOfSgns] = size(ScopeData) 
time = ScopeData(:,1); 

% Plot all signals 
hold on 
for j=0:NumOfSgns-2, 
    graph=plot(time,ScopeData(:,2+j:end),'Color', rand(1,3)); 

    % Signals description and position of the legend 
    legend('firs wave form','next wave form','Location','SouthEast'); 
end 
hold off 

Спасибо.

+0

В чем же ваша проблема? –

+0

В моем скрипте ошибка при создании графика (где-то вокруг/в цикле for «Plot all signals»). Он работает хорошо для одного сигнала (если вместо цикла for я использую только «graph = plot (time, ScopeData (:, 2: end)»). – user1313386

+0

Попробуйте изолировать код, который показывает проблему. См. Http://sscce.org. –

ответ

1

Проблема заключается в использовании как legend, так и hold on: Поскольку вы используете hold on, MATLAB не очищает старый участок перед тем, как рисовать новое. Но он не хранит информацию предыдущих сюжетов для legend. Вам нужно сделать это вручную.

Вот код (непроверенные, не имеют доступа к MATLAB в данный момент):

titles = {'A', 'B', 'C', 'D'}; 
handles = zeros(1, length(titles)); 
figure; 
hold on; 
for i = 1 : length(titles) 
    handles(i) = plot(1 : 10, rand(1, 10), 'Color', rand(1, 3)); 
end 
legend(handles, titles{:}); 

Итак: Храните ручки возвращаемые plot в векторе и передать его в legend (что вам нужно вызов после цикла).

+0

Это графический график с легендой, но я не показываю метки для оси. В вашем коде я добавил xlabel ('xxx', 'FontSize', 15); ylabel ('yyy', 'FontSize', 15) и ничего не отображается. Любые идеи, где проблема? – user1313386

+0

@ user1313386: добавление кода ярлыка ниже моего кода отлично подходит для меня на MATLAB R2012b, я получаю как намеченные метки оси x, так и y. –

+0

После перезагрузки мой компьютер все в порядке. Большое спасибо всем, кто внес свой вклад в обсуждение. – user1313386

Смежные вопросы