Come si fa ad algoritmizzare il rilevamento dei cluster di alimentazione MA? - pagina 6

 

Calcolail prezzomediano su un dato intervallo con un dato numero di approssimazioni.

Ciao C'è un array di valori.

Il compito è scrivere una funzione.

Parametri di ingresso:

- l'array contiene i numeri degli elementi necessari per calcolare la mediana - bufInBar[]

- dimensione dell'array -bufInBar[]- count

- numero di approssimazioni mediane - fokus

void medianaL0(const int &bufInBar[], int count, int fokus)

Cioè, c'è una classe

bufInBar[i] - используется для загрузки нужного элемента при расчете медианы 

BP[bufInBar[i]].CenaPerioda; - по этому значению рассчитывается медиана
BP[bufInBar[i]].Period; 

In uscita :

BP[bufInBar[i]].Mediana; 

Compilato in ordine crescente, per esempio da 0 a 10.

Cioè, sefokus=10 nella condizione, allora all'intervallo i<conta i dieci valori

BP[bufInBar[i]].Mediana;

sarà da 1 a 10.

Per esempio

BP[3256].Mediana=0;
BP[6256].Mediana=1;
BP[9256].Mediana=2;
...
 
Non è chiaro quale sia il fokus
 
In teoria, la mediana è il valore dell'elemento nel mezzo di un array ordinato. Cosa c'è nel tuo caso?
 
Dmitry Fedoseev:
Non è chiaro cosa sia il fokus
Aleksei Stepanenko:
In teoria, la mediana è il valore dell'elemento nel mezzo di un array ordinato. Che cos'è nel tuo caso?

Esempio:

Array di 30 valori di prezzo MA, cerca il centro dell'array ordinato.

Otteniamo il valore 15(L0) al centro della matrice, poi otteniamo due matrici da L0 in giù e L0 in su e troviamo il centro di queste matrici e così via fino ad ottenere il numerofokus (sette valori per esempio)

                        --------------|--------------
                        -------|--------------|------
                        ---|-------|------|-------|--
fokus=7
| - значение цены
        

 
Mikhail Toptunov:

Esempio:

Array di 30 valori di prezzo MA, cerca il centro dell'array ordinato.

Otteniamo 15(L0) come valore al centro della matrice, poi otteniamo due matrici da L0 verso il basso e L0 verso l'alto e troviamo il centro di queste matrici e così via fino ad ottenere il numerofokus (sette valori per esempio)

E se c'è un numero pari di elementi dell'array, quale elemento sarà la mediana, o dovrebbe essere calcolata come la media di due o qualcos'altro?

 
Mikhail Toptunov:

Esempio:

È corretto supporre che dobbiamo trovare sette percentili: 12,5, 25, 37,5, 50, 62,5, 75, 87,5?

Se è così, dividete il numero di elementi nell'array ordinato per 8 (7+1), e moltiplicate per il numero del percentile che volete. Otteniamo i seguenti indici di elementi: 3, 7, 11, 15, 18, 22, 26.

int index=ArraySize(bufInBar)*percentile/(fokus+1);

//где percentile - номер нужного перцентиля от 1 до fokus 

double value=bufInBar[index];

Giusto, o sto andando nella direzione sbagliata? Se è così, la cosa più importante qui è creare un meccanismo parsimonioso per mantenere un array ordinato.

 
Perché non si può usareMathQuantile()?
 
Dmitry Fedoseev:

E se l'array ha un numero pari di elementi, quale elemento è la mediana o deve essere calcolato come la media di due o qualcosa del genere?

Penso che sia più facile prendere un valore intero pari.

Se ci sono 15 elementi, allora la mediana è 8.

 
Aleksei Stepanenko:

È corretto supporre che dobbiamo trovare sette percentili: 12,5, 25, 37,5, 50, 62,5, 75, 87,5?

Se è così, dividete il numero di elementi nella matrice ordinata per 8 (7+1), e moltiplicate per il numero del percentile richiesto. Otteniamo i seguenti indici di elementi: 3, 7, 11, 15, 18, 22, 26.

Giusto, o sto andando nella direzione sbagliata? Se è così, la cosa più importante qui è creare un meccanismo parsimonioso per mantenere un array ordinato.

Dall'array di valori MA devi trovare la mediana dell'intero array, poi le mediane degli array ottenuti sopra/sotto la prima mediana, ecc.

 

Sembra giusto allora, la mediana della prima parte della matrice è un quarto della matrice totale, ed è il 25 percentile. E la mediana della seconda parte è il 75° percentile.

Questo:

                        --------------|---------------
                        -------|--------------|-------
                        ---|-------|------|-------|---

è uguale a questo:

                        ---|---|---|---|---|---|---|---
Motivazione: