На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Распознавание геометрических фигур на плоскости
    Вот база данных в экселе, и вот код в матлабе ее открывающий
    Цитата
    function openexcel
    [data, headertext] = xlsread('D:\Prog\MAT\Projects\Ver13\private\Formy2-8_3.xls');
    [row,col]=size(data); data = data(3:row,1:col); f = [];
    for i = 1:21
    f(i).d = data(:,(2*i-1):2*i); f(i).d(any(isnan(f(i).d),2),: ) = [];
    f = radiuses(f,i);
    end
    end

    function f = radiuses(f,ind)
    f(ind).Mc = centermass(f(ind).d); X = f(ind).Mc.X; Y = f(ind).Mc.Y;
    for i = 1:length(f(ind).d)
    f(ind).r(i) = sqrt((X-f(ind).d(i,1))^2+(Y-f(ind).d(i,2))^2);
    end
    end

    function M = centermass(a)
    n = length(a); M.X = sum(a(:,1))/n; M.Y = sum(a(:,2))/n;
    end
    В структуре f все данные и результаты вычислений: f.d - исходные данные, f.Mc - центр фигуры(точка О на графике эллипса), f.r - расстояния от центра фигуры до точек ее контура.
    Идея решения состоит в движении от графика радиусов к контуру. Как определить, например, что данная фигура эллипс? Вычисляется максимальный радиус max(f.r), допустим точка А. Продолжаем АО до пересечения в точке В. Если eps < abs(AO - OB), то это не эллипс (eps - вычисляется опытным путем), иначе проводим СD. Находим а и b и ур-е эллипса. Теперь любую точку на контуре можно проверить на принадлежность к этому уравнению. Вычисляем напр x^2/a^2 + y^2/b^2 = F(i) для всех точек и проверяем девиацию F.
    user posted image
    Сообщение отредактировано: Tur -
      Tur не могли бы Вы скинуть вашу базу данных, если это возможно, на email: rrazer@mail.ru. Хотел бы попробовать решить эту задачу с помощью нейросетей. Заранее спасибо
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0285 ]   [ 15 queries used ]   [ Generated: 13.10.25, 10:24 GMT ]