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

Динамическая легенда в цикле

23.05.2013, 22:48. Показов 10793. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Первый мой вопрос на этом форуме, не кусайте больно.
Есть цикл(ниже приведу код), в котором на каждом ходе цикла расчитывается кривая. После расчета, эта кривая выводится на зафиксированный график(hold on). В итоге после цмкла получаем набор кривых.
Очевидные проблемы, которые хочется решить:
-раскрасить каждую кривулину в свой цвет
-вывети легенду со всеми кривыми, причем название каждой кривой бралось бы из переменной(типа как num2str).
легенду можно вывести разорванно, т.е. не одну цельную, а набор отдельных легенд. Главное, чтобы цвета совпадали с цветами кривых.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for b=1:1:6
            for K10=100:10:1000
                K1c=K10.*(-log(1-u1)).^(1/b);
                for i=1:1:100000
                    if K1(i) >= K1c(i)
                    n=n+1;
                    end;
                end;
                nn(1+(K10-100)/10)=log(n/1000);
                n=0;
            end
            plot(xx,nn)
            grid on
            title(['b=0.5:0.25:2 ','Sigm=',num2str(sigm),'S=',num2str(S)])
            xlabel('Ln(K10)')
            ylabel('Ln(n)')
            hold on
end
Спасибо!
PS Если у кого-то есть альтернативные способы вывода графиков. предлагайте, только если это не очень сложно - я металловед, а не программист, не мое это - а надо .
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.05.2013, 22:48
Ответы с готовыми решениями:

Динамическая переменная в цикле
Есть два цикла, нужно вывести содержание массивов $global = array('_SERVER', '_SESSION', '_COOKIE', '_REQUEST', '_GET', '_POST',...

Легенда о шахматах
Согласно древней легенде, создатель игры «шахматы» согласился продать их за зерно, количество которого нужно считать с помощью шахматной...

Легенда диаграммы
Здравствуйте, товарищи программисты! :) Помогите пожалуйста дополнить код, чтобы в легенде диаграммы вместо ряд1, ряд2... записывались...

14
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
24.05.2013, 10:42
Дружочек, подскажи, откуда берутся xx, n, u1?
А еще лучше дай полностью задание, формулку и данные.

Вообще, в подобных случаях, как у тебя, результаты сохраняют в цикле в матрицу по столбцам, также в цикле делаеются подписи к легенде (только подписи), а после цикла строится график (автоматом все кривые станут разноцветными) и ставится легенда ко всем кривым

*по поводу динамической легенды:
как-то хотел делать анимированый график с легендой, также в цикле, но при добавилении легнды внутри цикла процесс ооочень тормозит.
0
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 11
24.05.2013, 12:37  [ТС]
Все задание? Хотите за меня бакалаврскую написать?
Весь код вот он: (если что-то где-то через 5ю точку уж простите)
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
u=rand(100000,1);
u1=rand(100000,1);
razn=1:1:100000;
nn=0:1:90;
n=0;
x=100:10:1000;
xx=log(x);
sigm=40;
b=0.5;
S=20;
for S=20:20:20
    a=-0.14*sqrt(S).*log(1-u);
    for sigm=30:10:30
        figure
        K1=0.7*sigm*sqrt(pi.*a);
        for b=4:1:4
            for K10=100:10:1000
                K1c=K10.*(-log(1-u1)).^(1/b);
                for i=1:1:100000
                    if K1(i) >= K1c(i)
                    n=n+1;
                    end;
                end;
                nn(1+(K10-100)/10)=log(n/1000);
                n=0;
            end
            plot(xx,nn)
            legend('b=1','b=2','b=3','b=4','b=5','b=6')
            grid on
            title(['Sigm=',num2str(sigm),'S=',num2str(S)])
            xlabel('Ln(K10)')
            ylabel('Ln(n)')
            hold on
        end
    end
end
А насчет матрицы - можете какой-то пример кинуть?
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
24.05.2013, 13:01
Ага ну мне было бы проще работать чисто с математической формулой, но думаю с твоим кодом тоже справлюсь, будет время - гляну
А вот пример рисования матрицы
Matlab M
1
2
3
4
5
6
7
8
9
10
clear, clc
 
t = 0:0.01:pi; % массив времени
f = 1:3; % массив значений часоты
for i = 1:length(f)
    y(:,i) = sin(f(i)*t); % сохраняем в столбец матрицы
    str{i} = ['f_0 = ',num2str(f(i))]; % сохраняем подпись
end
plot(t,y)
legend(str)
или более наркоманский вариант
Matlab M
1
2
3
4
5
t = 0:0.01:pi; % массив времени
f = 1:3; % массив значений частоты
plot(t,sin(f'*t))
str = {strcat('f_0 = ',num2str(f'))}
legend(str)
1
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 11
24.05.2013, 13:11  [ТС]
Ооо, спасибо!

Да, в коде, что я привел выше, некоторые циклы сделаны замершими - это для проверки конкретный условий и работы, а так на одном графике строится семейство кривых при разных b. (поправка, уже наоборот, для каждого b свои отдельные оси, но сути это не меняет).

И раз уж народ здесь, как я понял, разбирается досканально в проблемах, я спрошу еще:
Вопрос похоже связан с крашем задачи - при увеличении числа b фактическая длина графике уменьшается, более того ри увеличении b начинаются какие-то зигзаги. Вот два графика для b=1 и b=6 - извините, не знаю как вставить картинку в текст, графики я прикрепил.
Миниатюры
Динамическая легенда в цикле   Динамическая легенда в цикле  
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
24.05.2013, 13:28
ага, понемногу проясняется. А формулку для расчетов можешь скинуть?
0
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 11
24.05.2013, 13:42  [ТС]
Там много формул, сам график не является функцией - он есть массив чисел количества выполнения неравенства

K1(i) >= K1c(i)

Т.е. столько раз для каждого K10 выполнилось это неравенство.

Формула, где присутствует b:

https://www.cyberforum.ru/cgi-bin/latex.cgi?{K}_{1c}={K}_{10}*{(-log(1-{u}_{1}))}^{(1/b)}
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
24.05.2013, 14:11
Пока туго соображаю что к чему, поэтому пока так
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
clear, clc
 
u=rand(100000,1);
u1=rand(100000,1);
razn=1:100000;
 
x = 100:10:1000;
xx = log(x);
 
for S=60
    a = -0.14*sqrt(S).*log(1-u);
    for sigm=30:10:30
        figure
        K1 = 0.7*sigm*sqrt(pi.*a);
        for b = 1:6
            for K10=100:10:1000
                K1c=K10.*(-log(1-u1)).^(1/b);
                n = sum(K1>=K1c);
                nn(b, 1+(K10-100)/10) = log(n/1000);
            end
            str{b} = ['b = ',num2str(b)];
        end
        plot(xx,nn), grid on
        legend(str)
        title(['Sigm=',num2str(sigm),' S=',num2str(S)])
        xlabel('Ln(K10)')
        ylabel('Ln(n)')
    end
end
График:



Почему оно строит ступеньками я не знаю
*Если ты посмотришь код и найдешь строчечку n = sum(K1>=K1c); то не пугайся, все работает правильно почитай эту заметочку: https://www.cyberforum.ru/blog... og931.html
1
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
24.05.2013, 14:18
А логарифм то, судя по формуле, десятичный
0
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 11
24.05.2013, 14:19  [ТС]
Спасибо огромное!
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
24.05.2013, 14:28
Dimka_rtf, посмотри подписи к графикам - там натуральный

*В матлаб:
log(x) - натуральный логарифм
log10(x) - десятичный логарифм
0
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 11
24.05.2013, 14:28  [ТС]
Должен быть натуральный, прошу прощения!
0
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
24.05.2013, 14:35
ок. Сори, подписи не глянул
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
25.05.2013, 17:35
О! Меня оснило откуда берутся ступеньки и почему укорачиваются графики!
Разгадка кроется в сущности переменной n, из которй мы считаем nn и которая является количеством!
Это значит, что n - целое натуральное число или ноль, т.е. n = 0, 1, 2,... То есть это дискреная величина!
Теперь гляди, при больших значениях K10, n становится все меньше и меньше, так что самая нижняя ступенька соответсвует n=1, следующая - n=2 и т.д. а так как входные величины u и u1 - случайные, то вполне вероятно, что для разных соседних K10, n будет одинаковое
Теперь дальше: при определенных K10, получим n=0, тогда логарифм nn=log(n/1000) будет равен минус бесконечности! а особенность команды plot в том, что она такие значения игнорирует и не прорисовывает! Поэтому линия обрывается
0
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 11
25.05.2013, 17:46  [ТС]
Да, я тоже примерно так же это объяснил, только я не знал, что плот игнорирует зоны сингулярности.
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2013, 17:46
Помогаю со студенческими работами здесь

Легенда на графике
Как создать легенду под графиком расчета биоритмов? Зеленый- физическое состояние, красный- эмоциональное, синий- интеллектуальное.

Индийская легенда
НАРОД ПОМОГИТЕ ПЛЗ! ПОДСКАЖИТЕ КАК ВЫВЕСТИ ОЧ БОЛЬШОЕ ЧИСЛО В ЭТОЙ ЗАДАЧЕ НАПРИМЕР ЕСЛИ ВЗЯТЬ 10 ячейку? "О шахматной доске и...

Компонента MSChart: Легенда
По умолчанию там С1, С2, ... А как это поменять на свои названия?

DBChart. Легенда графика
не могу найти, как в DBChart заполнить легенду. очень нужна помощь. и информации по Chart'у мало как-то

Легенда для карты
Здравствуйте все. Такая проблема: у меня есть карта скважин, которая рисуется на сцене и отображается в GraphicsView. Нужно сделать легенду...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru