Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Уплотнение групп интервалов в стате 
:(
    Опции темы
koder
Дата 4.12.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 30.4.2005
Где: Moscow

Репутация: нет
Всего: 2



Какой алгоритм уплотнения групп интервалов в статистике, есть ли исходники?
--------------------
THE TRUTH IS OUT THERE
PM WWW ICQ   Вверх
esperant0
Дата 4.12.2007, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Цитата(koder @ 4.12.2007,  09:43)
Какой алгоритм уплотнения групп интервалов в статистике, есть ли исходники?

решаете на сколько уплотнить и уплотняете


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
koder
Дата 10.12.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 30.4.2005
Где: Moscow

Репутация: нет
Всего: 2



Оцените на правильность и оптимальность кода

Код

using System;

public class Groups
{
    public struct AFreq
    {
        public double StartF;
        public double EndF;
        public int Freq;
        public double StartT;
        public double EndT;
        public double DiffDisp;
        public double TheorFreq;
        public double DiffFreq;
        public double SqFreq;
        public bool Contains(double value)
        {
            if ((value >= Math.Round(StartF, 9)) && (value < Math.Round(EndF, 9)))
                return true;
            else
                return false;
        }
    }
    public AFreq[] ActualFreq;
    private AFreq[] TempFreq;
    public Groups()
    {
        
    }
    
    public int ConcateInterval(int Interval1, int Interval2){
        if ((Interval1 > ActualFreq.Length) || (Interval2 > ActualFreq.Length))
            throw new ArgumentException("Не верные аргументы!");

        ActualFreq[Interval1].EndF = ActualFreq[Interval2].EndF;
        ActualFreq[Interval1].Freq += ActualFreq[Interval2].Freq;
        ActualFreq[Interval2].Freq = -1;
        return ActualFreq[Interval1].Freq;
    }
    public void Integration() {
        for (int i = 0; i < ActualFreq.Length; i++)
        {
            if ((ActualFreq[i].Freq < 5) && (ActualFreq[i].Freq != -1))
            {
                if (i == 0)
                {
                    for (int j = 1; j < ActualFreq.Length; j++)
                    {
                        if (ConcateInterval(i, j) >= 5) break;
                    }
                }
                else if (i == ActualFreq.Length - 1)
                {
                    ConcateInterval(i - 1, i);
                }
                else if (i > 0)
                {
                    if (ActualFreq[i + 1].Freq < 5)
                    {
                        int k = i;
                        for (int j = i + 1; j < ActualFreq.Length; j++)
                        {

                            if (ConcateInterval(i, j) >= 5)
                            {
                                if (j == ActualFreq.Length - 1) i++;
                                break;
                            }
                            else if (j == ActualFreq.Length - 1) 
                            {
                                ConcateInterval(k - 1, i);
                            }
                            if (j == ActualFreq.Length - 1) i++;
                        }
                    }
                    else
                    {
                        ConcateInterval(i - 1, i);
                    }
                }
            }
        }
        int len = 0;
        for (int i = 0; i < ActualFreq.Length;i++ )
        {
            if (ActualFreq[i].Freq != -1)
            {
                len++;
            }
        }
        TempFreq = new AFreq[len];
        int z = 0;
        for (int i = 0; i < ActualFreq.Length; i++)
        {
            if (ActualFreq[i].Freq != -1)
            {
                TempFreq[z++] = ActualFreq[i];
                    
            }
        }
        ActualFreq = TempFreq;
    }
   
}


--------------------
THE TRUTH IS OUT THERE
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0982 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.