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

896

    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. Silmienvääntelijä-persut pääsivät Japanissa sarjakuvaan

      Torille! https://www.hs.fi/kulttuuri/art-2000011943173.html
      Maailman menoa
      179
      5012
    2. Nato kaatamassa Petterin haaveileman Tunnin junan?

      Nato edellyttää pohjoisessa Jäämereltä Rovaniemelle saakka kapearaitesta suoraa rautatieväylää, joka maksaa paperirahaa,
      Maailman menoa
      19
      4397
    3. Donald Trump pääsi samalle listalle Sanna Marinin kanssa

      Eli vasemmistolaisen Time-median top 100 jännäihmisten listalle. https://time.com/collections/time100-next-2021/5937699
      Maailman menoa
      9
      3117
    4. Älkää vaan sairastuko syöpään Suomessa

      Tilaston mukaan Suomi, Slovakia ja Latvia lääkitsee aivan pohjamudissa syöpää. Sairastunutta hoidetaan edelleen vanhana
      Maailman menoa
      253
      2962
    5. Kyllä, maata ei halua puolustaa nimenomaan punavihreän puolen edustajat

      "Esimerkiksi maanpuolustushenki on keskimääräistä alempana naisten, arvoliberaalien, heikossa taloustilanteessa olevien
      Maailman menoa
      143
      2902
    6. Sä veit mun sydämen ihan totaalisesti

      Aivan totaalisesti..
      Ikävä
      52
      2511
    7. Oot se sinä

      Ihan varmasti oot, tuo olemus ei valehtele 😘💓🪅 🏡 ihana 😍🙏
      Ikävä
      27
      1929
    8. Ei siinä kauan

      Menisi jos olisimme kahden
      Ikävä
      22
      1757
    9. Vieläkö olet

      Rakastunut minuun? Minä sinuun
      Ikävä
      35
      1750
    10. Toivotko vielä kohtaamista

      Kaivattusi kanssa?
      Ikävä
      68
      1741
    Aihe