Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 19.05.2017
Сообщений: 6

На одном листе построить 3 графика

15.06.2017, 11:00. Показов 3212. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Зосима,
Добрый день!
Мне в МатЛабе для обработки эксперимента нужна на одном листе построить 3 графика - не получается.
Помогите, что делать???
Мне нужно для презентации результатов на одном полотне построить 3-4 графика.
Пока не получается. Что делать??? код ниже

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
clear all
file_d = dir('d*.txt');
file_h = dir('H*.txt');
file_c = dir('Z*.txt');
 
figure
set(gcf,'Position',[1 1 1600 900])
 
for i = 1:2
%  открываем файлы и считываем информацию     
    filename_d = {file_d.name}; 
    data_d = importdata(char(filename_d(i)));
    filename_h = {file_h.name};
    data_h = importdata(char(filename_h(i)));
    filename_c = {file_c.name};
    data_c = importdata(char(filename_c(i)));   
%  создаем линейную дву-мерную картезианскую сетку  
    x.YLim = [0,13];
    x = gca; 
%  выбираем цвет
    colormap(jet(100))
%  строим 1 график     
    contourf(linspace(0,150,length(data_d(1,:))), linspace(9,12,length(data_d(:,1))), data_d, 200, 'EdgeColor', 'none')
    line([0 150],[12 12], 'LineWidth', 3, 'color', 'black')
    line([0 150],[9 9],   'LineWidth', 3, 'color', 'black')
    colorbar
%  строим 2 график     
    contourf(linspace(0,150,length(data_h(1,:))), linspace(5,8 ,length(data_h(:,1))), data_h, 200, 'EdgeColor', 'none')
    line([0 150],[8 8],  'LineWidth',3,'color','black')
    line([0 150],[5 5],  'LineWidth',3,'color','black')
    colorbar
%  строим 3 график     
    contourf(linspace(0,150,length(data_c(1,:))), linspace(1,4 ,length(data_c(:,1))), data_c, 200, 'EdgeColor', 'none')
    line([0 150],[4 4],  'LineWidth',3,'color','black')
    line([0 150],[1 1],  'LineWidth',3,'color','black')
    colorbar
%    saveas(gcf,[char(filename_h),'.png'])
end
 
clear i x file
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.06.2017, 11:00
Ответы с готовыми решениями:

Построить три графика в одном
Помогите пожалуйста построить графики, а то они все строят одно и тоже. желательно все три результата на одном графике чтобы были. спасибо...

Как построить 2 графика на одном рисунке?
Здравствуйте! у меня код есть могу построить первый график сначала а потом заменить данные и построить второй график но отдельно ...

Как построить 2 трехмерных графика в одном окне
Графики строятся по отдельности, но хочу для сравнения вывести их в одном окне. Подскажите, что не так. clear all Signal=; figure(1) ...

7
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
15.06.2017, 13:19
zakievich, я правильно понимаю, что у тебя в файлах матрицы и ты хочешь сделать на одной системе три контура?
Трудно что-то сказать определенное без данных.
С одной стороны можно просто сделать hold on которого я тут не вижу, после figure. Но в этом случае уровни будут разными для каждой поверхности (200 линий это не многовато?). Чтобы уровни были одинаковыми - либо задавать их вручную в каждом графике, либо "склеивать" данные в одну матрицу.
0
0 / 0 / 0
Регистрация: 19.05.2017
Сообщений: 6
15.06.2017, 15:20  [ТС]
добрый день!
Мне нужно построить дву-мерные графики по научным расчетам одного прибора.
да действительно: текстовые файлы - просто 2-мерные матрицы с числами, есть обработанные результаты расчетов
Вот что я написал в итоге.
обошелся без "hold on" пока не понял зачем надо

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
clear, clc
%
file_d = dir('d*.txt');
file_h = dir('H*.txt');
file_c = dir('Z*.txt');
%
figure
set(gcf,'Position',[1 1 1600 900])
%
for i = 1:20000
%  открываем файлы и считываем информацию     
    filename_d = {file_d.name}; 
    data_d = importdata(char(filename_d(i)));  
    filename_h = {file_h.name};
    data_h = importdata(char(filename_h(i)));
    filename_c = {file_c.name};
    data_c = importdata(char(filename_c(i)));   
%  строим 1 график 
    subplot(311);
    ax1 = gca;              %  создаем линейную дву-мерную картезианскую сетку    
    ax1.YLim = [0,3];
    ax1.XLim = [0,150];
    contourf(linspace(0, 150,length(data_d(1,:))), linspace(0, 3,length(data_d(:,1))), data_d, 128, 'EdgeColor', 'none')
    line([0 150],[0 0], 'LineWidth', 3, 'color', 'black')
    line([0 150],[3 3], 'LineWidth', 3, 'color', 'black')
    colormap(ax1,hot(128))   %  выбираем цвет
    colorbar
    title('Density evolution') 
%  строим 2 график     
    subplot(312);
    ax2 = gca;              %  создаем линейную дву-мерную картезианскую сетку    
    ax2.YLim = [0,3];
    ax2.XLim = [0,150];
    contourf(linspace(0, 150,length(data_c(1,:))), linspace(0, 3 ,length(data_c(:,1))), data_c, 128, 'EdgeColor', 'none')
    line([0 150],[0 0],  'LineWidth',3,'color','black')
    line([0 150],[3 3],  'LineWidth',3,'color','black')
    colormap(ax2,hot(128))   %  выбираем цвет
    colorbar
    title('Current evolution') 
%  строим 3 график 
    subplot(313); 
    ax3 = gca;              %  создаем линейную дву-мерную картезианскую сетку    
    ax3.YLim = [0,3];
    ax3.XLim = [0,150];
    contourf(linspace(0, 150,length(data_h(1,:))), linspace(0, 3 ,length(data_h(:,1))), data_h, 128, 'EdgeColor', 'none')
    line([0 150],[0 0],  'LineWidth',3,'color','black')
    line([0 150],[3 3],  'LineWidth',3,'color','black')
    colormap(ax3,hot(128))   %  выбираем цвет
    colorbar
    title('M-field evolution') 
    saveas(gcf,[char(filename_d(i)),'.bmp'])
end
 
clear i x file
мне надо еще вывести время расчета для каждого кадра
как это сделать?
нужен ли "hold on" здесь?
что еще полезного? добавить нужно или можно или хватит?
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
15.06.2017, 15:36
Цитата Сообщение от zakievich Посмотреть сообщение
мне надо еще вывести время расчета для каждого кадра
Matlab M
1
2
3
4
5
for i = 1:20000
   tic % засекаем время
     % считаем/рисуем 
   T(i) = toc; % конец отсчета времени, сохраняем значение
end
Как по мне слишком громоздко написано, но это лично мое субъективное мнение Если работает - лучше не трогать.
0
0 / 0 / 0
Регистрация: 19.05.2017
Сообщений: 6
15.06.2017, 15:45  [ТС]
дописал еще чистку памяти в конце

% почистим память
clear i x file_d
clear i x filename_d
clear i x data_d
clear i x file_h
clear i x filename_h
clear i x data_h
clear i x file_c
clear i x filename_c
clear i x data_c
%

Добавлено через 6 минут
уточню какое время расчета:
не само время MatLaba потраченное на графику, а время численного расчета.
После расчетов я запускаю еще одну программу, которая обрабатывает бинарные результаты
расчетов численной программы. Мне надо создать еще один файл "время.txt" куда
буду выводить расчетное время каждой картинки. файл из 2-ух колонок: номер картинки время
как считать время и как его вывести на экран?
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
15.06.2017, 16:06
Цитата Сообщение от zakievich Посмотреть сообщение
дописал еще чистку памяти в конце
почему не clear all?

Со временем не совсем разобрался. Если у тебя есть файл время.txt, бери и считывай его как обычно, если нет - то откуда мне знать, как его создавать?
0
16.06.2017, 07:19

Не по теме:

Цитата Сообщение от zakievich Посмотреть сообщение
файл из 2-ух колонок: номер картинки время
как считать время и как его вывести на экран?
Ваша просьба в общем аналогична следующей
У меня в кармане есть записка, помогите ее прочитать

0
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
16.06.2017, 10:34
После построения plot, ввести hold on, сохраняет окно открытым Figure с первым графиком, затем можно добавить несколько графиков plot, эти графики добавляются к первому, затем останавливаем этот процесс hold off.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.06.2017, 10:34
Помогаю со студенческими работами здесь

Построить два разных графика, сохраненных в fig, в одном графике ()
Задача следующая: есть два файла fig c двумя графиками. доступа к изначальной программе нет. есть только эти два файла. оба графика в...

Как построить два графика в одном окне, чтоб ось x была общей и две оси y справа и слева
Добрый день! Необходимо построить два графика на одном поле с общей осью абцисс и двумя осями ординат? Как задать количество делений на...

Три графика в одном
am=5; p=; a=am*0.1*p./(1+0.1*p); aa=am*0.5*p./(1+0.5*p); aaa=am*1*p./(1+1*p); plot(p,a) hold on plot(p,aa) plot(p,aaa) ...

Три графика в одном окне
Здравствуйте, подскажите пожалуйста как вывести три графика в одном окне согласно следующему макету

Не строится два графика на одном рисунке
figure('name','log) loglog(f,Spectrum_Power, 'b'); hold all; y53=(-5/3)*f; loglog(f,y53,'r','linewidth',7); grid on; Почему-то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru