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

Создание графиков в цикле

30.08.2015, 23:32. Показов 3472. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Совсем недавно пришлось осваивать Matlab, поэтому вопрос совершенно глупый, однако в гугле найти ответа не удалось.

Задача: Построить 10 графиков и сохранить их.
Проблема: Не могу заставить Матлаб открыть в цикле нужную матрицу. Т.е. у меня есть 10 матриц 5x5, по которым строиться график поверхности: Z1,Z2,Z3,...,Z10. Они все объявлены в самом начале кода. Прорисовываю это чудо я командой surf(X,Y,Z), где Х, У - не измены для всех графиков. Но в цикле не могу объяснить Матлабу, что для прорисовки нужно использовать Zi матрицу. Вопрос тупо в синтаксисе, как я понимаю. Прощу прощения за совершенно идиотский вопрос, но ответ найти очень нужно, а дедлайн сильно поджимает.


Сам цикл:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for i=1:10 
    
    
    surf(X,Y,Z(i)) %проблема возникла вот сдесь
    
    str = ['График зависимости мощности уровня радиосигнала от координат помещения на частоте',' ', num2str(Zi_title),' ', 'МГц'] ;
    title(str)
    xlabel('Ширина помещения,м');
    ylabel('Длинна помещения,м');
    zlabel('Уровень сигнала');
    zlim([0 3]);
    xlim([0 5.5]);
    ylim([0 12]);
    grid on
    axis square
end
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.08.2015, 23:32
Ответы с готовыми решениями:

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

Рисование графиков в цикле
Доброго времени суток. В цикле получаю на каждой итерации некоторые значения (точки) и сразу же...

Вывод и суммирование графиков в цикле
Добрый день всем! Нужна ваша помощь. Пишу программу по обработке изображений. Необходимо создать...

Построение и сохранение графиков в цикле
Всех приветствую. Такой вот вопрос. Имеется энное кол-во векторов с именем...

10
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
30.08.2015, 23:34 2
Fomka16, дайте код,по которому можно получить Z.

Не по теме:

Правильно писать здесь,а не сдесь.

0
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 6
30.08.2015, 23:39  [ТС] 3
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Z1=dlmread('1.txt','\t');
Z2=dlmread('2.txt','\t');
Z3=dlmread('3.txt','\t');
Z4=dlmread('4.txt','\t');
Z5=dlmread('5.txt','\t');
Z6=dlmread('6.txt','\t');
Z7=dlmread('7.txt','\t');
Z8=dlmread('8.txt','\t');
Z9=dlmread('9.txt','\t');
Z10=dlmread('10.txt','\t');
 
X=[0 1 2 3 4 
   0 1 2 3 4 
   0 1 2 3 4 
   0 1 2 3 4 
   0 1 2 3 4];
Y=[0 0 0 0 0 
    2 2 2 2 2 
    4 4 4 4 4 
    6 6 6 6 6 
    8 8 8 8 8];
Вложения
Тип файла: rar Graph.rar (3.2 Кб, 3 просмотров)
0
177 / 143 / 50
Регистрация: 07.02.2014
Сообщений: 489
31.08.2015, 13:47 4
Fomka16, что-то типа этого:
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
clc, clear all, close all
 
Z1=dlmread('1.txt','\t');
Z2=dlmread('2.txt','\t');
Z3=dlmread('3.txt','\t');
Z4=dlmread('4.txt','\t');
Z5=dlmread('5.txt','\t');
Z6=dlmread('6.txt','\t');
Z7=dlmread('7.txt','\t');
Z8=dlmread('8.txt','\t');
Z9=dlmread('9.txt','\t');
Z10=dlmread('10.txt','\t');
Z = [Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10];
 
X=[0 1 2 3 4 
   0 1 2 3 4 
   0 1 2 3 4 
   0 1 2 3 4 
   0 1 2 3 4];
Y=[0 0 0 0 0 
    2 2 2 2 2 
    4 4 4 4 4 
    6 6 6 6 6 
    8 8 8 8 8]; 
% [X,Y] = meshgrid(X,Y);
 
for i = 1:10
    k = repmat(Z(:,i),1,5);
    figure();surf(X,Y,k);
end
1
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 6
31.08.2015, 16:54  [ТС] 5
К сожалению, не сработало. В матрице k получается 50 копий 1го столбца.
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
31.08.2015, 17:45 6
Лучший ответ Сообщение было отмечено Fomka16 как решение

Решение

а если так?
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
clc, clear all, close all
 
X=[0 1 2 3 4 
   0 1 2 3 4 
   0 1 2 3 4 
   0 1 2 3 4 
   0 1 2 3 4];
Y=[0 0 0 0 0 
    2 2 2 2 2 
    4 4 4 4 4 
    6 6 6 6 6 
    8 8 8 8 8]; 
 
for i = 1:10
    namefile=strcat(num2str(i),'.txt');
    Z=load(namefile);
    figure();
    surf(X,Y,Z);
end
1
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 6
31.08.2015, 18:06  [ТС] 7
Спасибо большое, работает. Всё настолько просто, что аж стыдно от моих конструкций. Сказывается большой пробел в синтаксисе и опыте работы с Матлабом.
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
31.08.2015, 18:06 8
если после
Matlab M
1
surf(X,Y,Z);
добавить
Matlab M
1
shading interp
графики будут привлекательнее
1
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 6
31.08.2015, 18:33  [ТС] 9
Подскажите ещё, пожалуйста, как задать название графика в цикле? Необходимо, чтобы график назывался "График зависимости мощности уровня радиосигнала от координат помещения на частоте x МГц", но не могу прикрепить "х" к циклу.С функцией strcat не выходит. Пытаюсь сделать вот так:

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
%Частоты, которые необходимо указать в название
Z1_title=99.2;
Z2_title=99.6;
Z3_title=100.9;
Z4_title=102.1;
Z5_title=102.5;
Z6_title=103.0;
Z7_title=104.2;
Z8_title=105.7;
Z9_title=106.2;
Z10_title=107.0;
 
 
for i = 1:10
    namefile=strcat(num2str(i),'.txt');
    Z=load(namefile);
    figure();
    surf(X,Y,Z);
 
    shading interp
 
    x=??
    str = ['График зависимости мощности уровня радиосигнала от координат помещения на частоте',' ', num2str(x),' ', 'МГц'] ;
    title(str)
    xlabel('Ширина помещения,м');
    ylabel('Длинна помещения,м');
    zlabel('Уровень сигнала');
    zlim([0 3]);
   %xlim([0 5.5]);
   %ylim([0 12]);
    grid on
    axis square
end
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
31.08.2015, 18:41 10
Лучший ответ Сообщение было отмечено Fomka16 как решение

Решение

лучше так...
вначале
Matlab M
1
2
%Частоты, которые необходимо указать в название
Ztitle=[99.2 99.6 100.9 102.1 102.5 103.0 104.2 105.7 106.2 107.0];
тогда в теле цикла
Matlab M
1
2
str = ['Мощность уровня радиосигнала на частоте',' ', num2str(Ztitle(i)),' ', 'МГц'] ;
    title(str);
2
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 6
31.08.2015, 18:55  [ТС] 11
Спасибо, работает.
0
31.08.2015, 18:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.08.2015, 18:55
Помогаю со студенческими работами здесь

Построение графиков в цикле
Имеется матрица. Нужно построить отдельно столько графиков, сколько строк в матрице. Пытаюсь делать...

создание графиков
Нарыл в интернете такой код <?php // Standard inclusions ...

Создание графиков
всем добрый день, подскажите пожалуйста как можно рисовать графики в C#? Пишу программу по типу...

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

Создание графиков
Помогите разобраться!Что к чему?Выделенные слова вообще могут использоваться в тексте программы?...

Создание графиков в pygame
Здравствуйте! Написал программу для управления обратным маятником. Пользовался библиотекой pygame,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru