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

Возникла проблема при построении графиков

10.10.2021, 00:26. Показов 960. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Возникла проблема при построении графиков в матлабе. Необходимо построить 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
% H1 - появление объекта
% H0 - отсутствие объекта
% SNR = 10.*log10(1./sigma.^2); % выражение отношения сигнал-шум SNR
% SNR ∈ [-1;5]
% sigma = sqrt(10.^(-SNR./10)); % выражение дисперсии из отоншения SNR
% sigma ∈ [0.562;1.122]
% lymbda - пороговое значение, с которым сравнивается СВ Х
% определение констант для задания изменения дапазона значений lymbda и sigma
lymbda_start = 0;
lymbda_end = 1;
lymbda_step = 0.1;
% lymbda изеняется от 0 до 1 с шагом 0.1 // 11 значений
sigma_start = 0.562; % SNR = 5 дБ
sigma_end = 1.122; % SNR = 2.36 дБ
sigma_step = 0.2; % SNR = 0.34 дБ
% sigma изменяется от 0.562 до 1.122 с шагом 0.2 // 3 значения
x = linspace(-6,6,100); % задаем диапазон изменения СВ х
% для удобства от -6 до 6 (100 точек), т.к. дальше этих значений функция
% fx1 = fx0 ~ 0, НО при расчете интегралов верхний предел будет +inf
% Построение нескольких графиков для анализа
figure('Color','w');
tiledlayout(4,1); % создаем столбец из 4-х графиков
% 1. Плотности распределения и пороговые lymbda
% 2. ROC-кривые
% 3. Pd(lymbda) и Pfa(lymbda)
% 4. Расстояние от точки ROC-кривой до идеального значения (0,1)
ax1 = nexttile; % первый график плотности распределения и пороговые значения lymbda
ax1.ColorOrder = [1 0 0; 1 0 0; 0 0 1; 0 0 1; 1 0 1; 1 0 1];
hold on;
% Построение функций плотности распределения fx1 и fx2
for sigma=sigma_start:sigma_step:sigma_end
f0 = 1./(sqrt(2*pi*sigma.^2))*exp(-(x.^2) /(2*sigma.^2)); % fx|H0(x|H0)
f1 = 1./(sqrt(2*pi*sigma.^2))*exp(-(x-1).^2/(2*sigma.^2)); % fx|H1(x|H1)
plot(ax1,x,f0,x,f1);
 
end
% Построение всех пороговых значений lymbda (вертикальные прямые)
for lymbda=lymbda_start:lymbda_step:lymbda_end
plot([lymbda,lymbda],[0,0.8],'--k'); 
% plot([x1,x2],[y1,y2]) // по точкам прямая
end
grid on;
title('Функция плотности распределения');
legend('fx|H0(x|H0), ������ = 0.562','fx|H1(x|H1), ������ = 0.562','fx|H0(x|H0), ������ = 0.762','fx|H1(x|H1),������ = 0.762','fx|H0(x|H0), ������ = 0.962','fx|H1(x|H1), ������ = 0.962');
ylabel('fx|H0(x|H0), fx|H1(x|H1)');
xlabel('x');
 
hold off;
% Построение ROC-кривых в зависимости от разных sigma
ax2 = nexttile;
k = 0:0.01:0.55;
y = k; % Ниже прямой Pd < Pfa, выше - Pd > Pfa
P = plot(k,y,'--k'); % построение главной диагонали Pd(Pfa)
ax2.ColorOrder = [0 0 0; 1 0 0; 0 0 1; 1 0 1];
hold on;
 
lymbda_arr = zeros(1,11); % массив значений лямбда от 0 до 1 с шагом 0.01
Pfa_arr = zeros(1,33); % массив значений вероятностей ложного обнаружения
Pd_arr = zeros(1,33); % массив значений вероятностей обнаружения
S_arr = zeros(1,33); % массив расстояний от каждой точки ROC-кривой до (0,1)
% 3 sigma * 11 lymbda = 33 значения Pfa и Pd
probability_arr_counter = 1; % счетчик для массивов Pd и Pfa // 1:33
ROC_entry_counter = 1; % счетчик отделения ROC-кривых в одном целом массиве // 1:3
syms x; % задаем повторно функции для вычисления вероятностей успеха и ошибки
for sigma=sigma_start:sigma_step:sigma_end
% определение функций плотностей распределения для новой сигмы
fd = 1./(sqrt(2*pi*sigma.^2))*exp(-(x.^2) /(2*sigma.^2)); % fx|H0(x|H0)
ffa = 1./(sqrt(2*pi*sigma.^2))*exp(-(x-1).^2/(2*sigma.^2)); % fx|H1(x|H1)
lymbda_counter = 1; % счетчик для лямбда массива 1:11
% можно использовать остаток от деления на 11 у счетчика probability_arr_counter
mod (probability_arr_counter, 11);
for lymbda=lymbda_start:lymbda_step:lymbda_end
lymbda_arr(lymbda_counter) = lymbda; % добавляем элемент лямбда в массив
Pfa_arr(probability_arr_counter) = int(fd,lymbda,inf); % Pfa
%probability_arr_counter, Pfa_arr(probability_arr_counter)
Pd_arr(probability_arr_counter) = int(ffa,lymbda,inf); % Pd
%probability_arr_counter, Pd_arr(probability_arr_counter)
S_arr(probability_arr_counter) = sqrt(Pfa_arr(probability_arr_counter).^2 + (Pd_arr(probability_arr_counter) - 1).^2);
% вычисление расстояния от точки кривой до идеального значения (0,1)
 
probability_arr_counter = probability_arr_counter + 1; 
lymbda_counter = lymbda_counter + 1;
end
% Построение ROC-кривой
%plot(ax2, Pfa_arr(((ROC_entry_counter)*10+ROC_entry_counter):(11*ROC_entry_counter)),Pd_arr(((ROC_entry_counter)*10+ROC_entry_counter):(11*ROC_entry_counter)));
%plot(ax2, Pfa_arr(ROC_entry_counter),Pd_arr(ROC_entry_counter));
plot(ax2,Pfa_arr(((ROC_entry_counter)*10+ROC_entry_counter):(11*ROC_entry_counter)),Pd_arr(((ROC_entry_counter)*10+ROC_entry_counter):(11*ROC_entry_counter)));
 ROC_entry_counter = ROC_entry_counter + 1;
 
end
grid on;
title('ROC-кривая');
ylabel('Pd(������)');
xlabel('Pfa(������)');
legend('Главная диагональ','SNR = 5 дБ','SNR = 2.36 дБ','SNR = 0.34 дБ');
hold off;
% Построение отдельных функция зависимости Pd(lymbda) и Pfa(lymbda)
ax3 = nexttile;
ax3.ColorOrder = [1 0 0; 1 0 0; 0 0 1; 0 0 1; 1 0 1; 1 0 1];
hold on;
% probability_arr_counter счетчик отделения 3-х различных кривых в одном массиве
for probability_arr_counter=1:1:3
 
 plot(ax3, lymbda_arr, Pd_arr(((probability_arr_counter)*10+probability_arr_counter):(11*probability_arr_counter)), lymbda_arr, Pfa_arr(((probability_arr_counter)*10+probability_arr_counter):(11*probability_arr_counter)));
 
end
grid on;
title('Зависимость вероятности обнаружения и ложного обнаружения в зависимости от ������');
ylabel('Pd(������), Pfa(������)');
xlabel('������');
 
legend('Pd (������), ������ = 0.562','Pfa(������), ������ = 0.562','Pd (������), ������ = 0.762','Pfa(������), ������ = 0.762','Pd (������),������ = 0.962','Pfa(������), ������ = 0.962');
hold off;
% построение функции расстояния точки ROC-кривой до идеального значения (0,1) в зависимости от lymbda
ax4 = nexttile;
ax4.ColorOrder = [1 0 0; 0 0 1; 1 0 1];
hold on;
for probability_arr_counter=1:1:3
 
 plot(ax4, lymbda_arr, S_arr(((probability_arr_counter)*10+probability_arr_counter):(11*probability_arr_counter)));
 
end
grid on;
title('Зависимость расстояния точки ROC-кривой до идеального значенияя (0,1) в зависимости от ������');
ylabel('S(������)');
xlabel('������');
legend('SNR = 5 дБ', 'SNR = 2.36 дБ', 'SNR = 0.34 дБ');
hold off;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2021, 00:26
Ответы с готовыми решениями:

Ошибки при построении графиков.
Помогите, пожалуйста: Дана функция y=e^(2x)*sin(x) Необходимо вывести 3 графика: 1) Функции 2) Её производной 3) Её интеграла ...

Нужно ли при построении графиков поверхностей пользоватся axis('square')?
Простой вопрос . Нужно ли при построении графиков поверхностей пользоватся axis('square')?

[GNU Octave] Как отрегулировать густоту сетки при построении графиков?
Собсно как отрегулировать густоту сетки при построении графиков в Gnu Octave? Как включить её я знаю, а вот как её сделать гуще, причём...

1
1298 / 927 / 449
Регистрация: 21.10.2012
Сообщений: 2,604
11.10.2021, 11:22
Лучший ответ Сообщение было отмечено VSI как решение

Решение

Sergey6335,
Matlab M
1
plot(ax2,Pfa_arr(((ROC_entry_counter - 1)*10+ROC_entry_counter):(11*ROC_entry_counter)),Pd_arr(((ROC_entry_counter - 1)*10+ROC_entry_counter):(11*ROC_entry_counter)));
Matlab M
1
plot(ax3, lymbda_arr, Pd_arr(((probability_arr_counter - 1)*10+probability_arr_counter):(11*probability_arr_counter)), lymbda_arr, Pfa_arr(((probability_arr_counter - 1)*10+probability_arr_counter):(11*probability_arr_counter)));
Matlab M
1
plot(ax4, lymbda_arr, S_arr(((probability_arr_counter - 1)*10+probability_arr_counter):(11*probability_arr_counter)));
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2021, 11:22
Помогаю со студенческими работами здесь

Прошу помощи в построении графиков уравнений подобного типа: x+x*y/((1+x)*(1+y)) - y=0
Доброго всем времени суток! Прошу помощи в построении графиков уравнений подобного типа: x+x*y/((1+x)*(1+y)) - y=0 Вместо единиц могут...

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

Проблема в построении графиков по точкам в одной системе координат
Добрый день всем! Импортировал громоздкие таблицы с данными из эксперимента из Excel в Mathcad. Вывел значения из таблицы Excel в...

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

Ошибка при построении графиков
Доброе время суток, форумчане. У меня такой вопрос. Мне нужно объединить два графика в один. Ось Х численно совпадает, но символьно нет,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru