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

Ось фигуры на графике

25.03.2018, 16:24. Показов 1606. Ответов 18

Студворк — интернет-сервис помощи студентам
Подскажите, можно ли как-то програмно определить длину эллипса (большую ось) и малую? или только по самому графику?
Миниатюры
Ось фигуры на графике  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2018, 16:24
Ответы с готовыми решениями:

Подписать ось в графике как X в степени y
Здравствуйте! Мне надо подписать ось в графике как X в степени y. Подскажите, как это сделать?

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

Как построить эллипс, если известны большая ось, малая ось, угол поворота оси, координаты центра эллипса
Возможно, вопрос элементарный, но: как построить эллипс в матлабе, если известны большая ось, малая ось, угол поворота оси, координаты...

18
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
25.03.2018, 17:05
Если эллипс задан по координатам (x,y) точек, то его длину можно найти следующим образом
Matlab M
1
sum(abs(diff(complex(x,y))))
0
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 96
25.03.2018, 17:36  [ТС]
а если это массив данных?
0
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
25.03.2018, 17:44
alkaponer, я не знаю, как Ваш массив выглядит. Если это матрица M из двумя координатами M(1,:) и M(2,:), то просто подставьте столбики/строчки вместо x и y
0
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 96
26.03.2018, 10:08  [ТС]
Цитата Сообщение от Сергей Тетьора Посмотреть сообщение
я не знаю, как Ваш массив выглядит. Если это матрица M из двумя координатами M(1, и M(2,, то просто подставьте столбики/строчки вместо x и y
Это большая ось элипса? а меньшую как найти, или хотя бы угол наклона большей оси?

Добавлено через 13 часов 40 минут
или вписанную окружность в элипс (диаметром малой оси)
0
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
26.03.2018, 14:58
alkaponer, нет, это не большая ось, это длина эллипса.
В Вашем случае могу предложить найти крайние точки большой оси. Координаты одной точки у Вас это максимальные M(1,:) и M(2,:), а второй минимальные M(1,:) и M(2,:). Потом находите длину этого отрезка - это будет большая ось.
А потом уже длину малой оси из формулы https://www.cyberforum.ru/cgi-bin/latex.cgi? L = \pi (a + b), где
https://www.cyberforum.ru/cgi-bin/latex.cgi?L - длина эллипса,
https://www.cyberforum.ru/cgi-bin/latex.cgi?a,b - полуоси.
0
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 96
26.03.2018, 17:07  [ТС]
Matlab M
1
2
3
4
5
6
7
m = Q(1);                    % текущее максимальное значение 
for i=1:length(Q)            % цикл от 1 до конца вектора с 
                             % шагом 1 (по умолчанию) 
    if m < Q(i)                   % если a(i) > m, 
         m = Q(i);           % то m = a(i) 
    end 
end                          % конец цикла for
использовал такой цикл, для поиска максимального значения, у меня в рабочем пространстве отображает m=''
0
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
26.03.2018, 17:23
alkaponer, выложите Ваш массив Q.

И почему бы не использовать вместо цикла функции max и min?
0
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 96
26.03.2018, 17:28  [ТС]
Вот
Вложения
Тип файла: rar matlab.rar (7.0 Кб, 3 просмотров)
0
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
26.03.2018, 17:34
alkaponer, Вы выложили вектор с, как я понимаю, с одной координатой. Где вторая?
0
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 96
26.03.2018, 18:26  [ТС]
специфичный массив, данные Y строит по X с шагом 1
0
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
26.03.2018, 20:00
Если я Вас правильно понял, то вот
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
clear all; close all; clc;
load('matlab.mat')
x = Q(1:2:length(Q)-1);
y = Q(2:2:length(Q));
 
ax(1) = min(x);
ax(2) = max(x);
ay(1) = min(y);
ay(2) = max(y);
 
L = sum(abs(diff(complex(x,y))))
a = sum(abs(diff(complex(ax,ay))))
 
b = 2*(L/pi - a/2)
0
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 96
26.03.2018, 20:15  [ТС]
хм...может я не то сделал...Вот какая штука есть грубо говоря вот эти 2 массива, если построить plot(Q,D) То и получится этот "элипс", я вот думал можно ли как-то перебрать данные, и найти Min и Max по Y
Вложения
Тип файла: rar matlab1.rar (6.8 Кб, 2 просмотров)
0
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
26.03.2018, 20:25
Аналогично...
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
clear all; close all; clc;
load('matlab.mat')
load('matlab1.mat', 'D')
 
ax(1) = min(Q);
ax(2) = max(Q);
ay(1) = min(D);
ay(2) = max(D);
 
L = sum(abs(diff(complex(Q,D))))
a = sum(abs(diff(complex(ax,ay))))
 
b = 2*(L/pi - a/2)
plot(Q,D,ax,ay)
Разберитесь сначала сами в задании.
0
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 96
26.03.2018, 20:27  [ТС]
значит что-то с рабочим пространством, просто не отображает там переменные x,y,L,a,b
0
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 96
26.03.2018, 21:11  [ТС]
cмущает, что b=345
Миниатюры
Ось фигуры на графике  
0
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
26.03.2018, 22:51
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
clear all; close all; clc;
load('matlab.mat')
load('matlab1.mat', 'D')
 
j = 1;
for i = 1:length(Q)
    if or(Q(i) <= -5.2, Q(i) >= 1.8)
        ind(j) = i;
        j = j+1;
    end
end % удалил странные значения посредине. искажали решение
 
Q = Q(ind);
D = D(ind);
Q(length(Q)+1) = Q(1);
D(length(D)+1) = D(1);
 
ax(1) = min(Q);
ax(2) = max(Q);
ay(1) = min(D);
ay(2) = max(D);
 
L = sum(abs(diff(complex(Q,D))))
a = sum(abs(diff(complex(ax,ay)))); % большая ось
a = a/2 % большая полуось
 
b = 1:200;
bb = fzero(@(b)(4*(pi*a*b + (a-b)^2)/(a+b)-L),[0,200]); % малая полуось
% была неправильная формула для длины
b = bb*2 % малая ось
 
plot(Q,D,ax,ay)
grid on
Миниатюры
Ось фигуры на графике  
0
164 / 134 / 61
Регистрация: 16.05.2015
Сообщений: 372
27.03.2018, 14:28
Осмелюсь предостеречь. Если Вы увеличите картинку с последним результатом, то станет видно, что полученная зеленая ось выходит за пределы самого "эллипса", а следовательно вычисленная длина зеленого отрезка не есть длина оси "эллипса".

Да и вообще, точки с координатами [Xmin, Ymin] и [Xmax, Ymax] не являются точками пересечения большей оси с эллипсом. Попробуйте изменить угол наклона самого эллипса и увидите как поведет себя "ось", построенная таким способом (например разместите эллипс вертикально).

Кроме того, ось эллипса является осью его симметрии, а в данном случае этого не наблюдается. Я имею в виду вблизи точек пересечения (о том, что это не эллипс, я пока молчу).

Т.к. это на самом деле не эллипс, то возникает вопрос о возможности применения формулы содержащей длину дуги эллипса. Ну и попутно возникает вопрос, что считать осью фигуры, которая не является эллипсом (и похоже, не является симметричной)?
0
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 96
27.03.2018, 21:24  [ТС]
спасибо большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2018, 21:24
Помогаю со студенческими работами здесь

Побочная ось на графике
Как сделать так,чтобы столбец&quot;погрешность&quot;поместить на график на побочную ось сверху в виде гистограммы,которая показывает,где погрешность...

Не вырисовывает главную ось У на графике
Все работает, но не рисуется гглавная ось У на графике, не могу понять в чем проблема using System; using System.Collections.Generic; ...

На графике Х и У не показывает отрицательную ось
Добрый вечер! Никак не могу разобраться. На графике Х и У не показывает отрицательную ось и продолжение графика пропадает. В результате...

Как на графике в Excel задать свои значения по оси X (а не просто подписать ось)?
Добрый день! Excel 2010. Создаю график, предположим, функции y = 0.5 x, по таблице значений. Соответственно, у меня есть таблица...

Проекция с фигурой Тетраэдр - Ось вращения не должна совпадать с собственной вертикальной осью фигуры
Написать программу для изображения многогранника, вращающегося вокруг оси ОY. Ось вращения не должна совпадать с собственной вертикальной...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru