Silmukka silmukassa

Ptr

Meni vahingossa väärälle palstalle, uusi yritys...

Eli tarkoitus on luoda funktio, johon annetaan vektori ja viive. Kun viive = 1, vektori lyhenee lopusta yhden solun. Sitten otetaan korrelaatio alkuperäisen ja uuden vektorin kanssa. Kun viive = 2, vektori lyhenee lopusta 2 solua. Jälleen alkuperäinen ja lyhyt vektori tuottavat korrelaation. Lopuksi summataan korrelaatiot yhteen.

Edellisen postin jälkeen kehittelin koodia eteenpäin, mutta vieläkään sisäkkäiset silmukat eivät tunnu toimivan:

Public Function crx(vect As Variant, viive As Double) As Variant

Dim N, i, k As Long
Dim corr As Double
Dim mat, mat1 As Variant
mat = vect
N = UBound(mat, 1)
i = 1
k = 1

Do Until k = viive
ReDim mat1(N - 1, 1)
For i = 1 To N - k
mat1(i, 1) = mat(i, 1)
Next
corr = WorksheetFunction.Correl(mat1, mat)
summa = summa corr
k = k 1
Loop

crx = summa

End Function

3

835

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • ........

      vieläkö joku käyttää VB:tä :O:O

      • Ptr

        Sinulla on varmaan Excelissä joku muu ohjelmointikieli?

        Jos kuitenkin viitsit vastata varsinaiseen kysymykseen, toisi enemmän lisäarvoa.


    • xxxxx

      En tajunnut kysymystäsi, kuten mitä tarkoitit korrelaatiolla. Mitä tuon WorksheetFunction.Correl -funktion pitäisi tehdä?

      Ainakin nämä virheet tuossa nyt on:

      mat1(i, 1) = mat(i, 1)
      Sijoitat saman arvon eli mikään ei muutu.

      i=1
      Turha antaa alkuarvo kun sitä ei käytetä. Rivi pois, sillä annat i-muuttujalle arvon for-nextillä.

      Sisäkkäiset silmukat on myös selkeämpää tehdä molemmat for-next -käskyllä:

      For k=1 to viive
      For i=1 to n-k
      ...
      Next i
      Next k

      Itse käytän harvoin do-loop -käskyä, koska siinä tarvitaan enemmän käskyrivejä. Enkä käytä sitä koskaan selkeissä luupeissa jotka voi tehdä for-nextillä, vaan ainoastaan kun silmukan määrää ei tiedetä etukäteen, esim. do until eof(Filenro#)

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Tykkään sinusta tosi tosi paljon

      Siksi en pysty sisäistämään sitä, että se ei ole molemminpuolista. Sattuu liikaa. En osaa käsitellä sitä tunnetta, koska
      Ikävä
      51
      3467
    2. Mikä sai sut ihastumaan

      Mitä tapahtui?
      Ikävä
      156
      2099
    3. Kaupan kassalla kannataa olla kylmä käytös

      https://www.is.fi/taloussanomat/art-2000010488540.html "19-vuotias Minja ja 59-vuotias Anne työskentelevät sillä todelli
      Sinkut
      204
      1791
    4. Mitä tehdä asialle?

      Jos laitan deitti-ilmon "40-vuotias nainen etsii seuraa" niin ketään ei kiinnosta (korkeintaan paria runkkaripenaa joill
      Sinkut
      135
      1699
    5. 80
      1165
    6. Hyvää heinäkuuta

      Hyvää huomenta ihanaa. 🦗🌾☔🤗🌻❤️
      Ikävä
      234
      1104
    7. Mitä helvettiä pakolaisille pitäisi tehdä RAJALLA?

      Jos Venäjä työntää rajalle pakolaisia ja tekee Suomelle selväksi että heidän puolelleen ei ole pakolaisilla asiaa - mitä
      Maailman menoa
      273
      1045
    8. Ethän syytä itseäsi

      siitä miten asia menivät. Mä en antanut sulle tilaisuutta.
      Ikävä
      130
      999
    9. Olen pahoillani mies

      Olen surullinen puolestasi, ettet saanut kaipaamaasi naista. Yrititkö lopulta edes? Teistä olisi tullut hyvä pari
      Ikävä
      52
      929
    10. Olet mies varmasti peto

      Makkarin puolella. 🤤
      Ikävä
      72
      895
    Aihe