DAU hat ein Problem !!



  • Dann schreib doch erstmal Schritt für Schritt auf (=Algorithmus), wie du es mathematisch machen würdest. Und dann zeig mal Ansätze vom Code. Bissl was wirst du doch haben, oder?



  • *mi1: pointer auf ein 1.Dim array, welches aber die 2.dim matrix representiert.
    zugriff auf die Matrixwerte über Koordinaten (X,Y)

    int x=5, int y=4;
    float wert = mi1[y*x-1];
    

    Denke mal dir war nich klar wie man auf die werte der matrizen zugreift, der rest ist ja selbsterklären, wenn du das in mathe verstanden hst



  • Also,

    ich weiß wie man Matrizen multipliziert.

    Ich weiß auch das ich bei einem eindimensionalen Array immer die Breite der Matrix weiterspringen muss um aufs mächste Element in der nächsten Zeile zu gelangen.

    Was ich nicht hinbekomme ist, das alles in zwei, drei for-Schleifen einzupacken.

    Könnte mir da einer helfen !
    Ich steh total auf denm Schlauch ???

    Big THX

    Gruß Merlin04



  • Merlin04 schrieb:

    ...
    Was ich nicht hinbekomme ist, das alles in zwei, drei for-Schleifen einzupacken.

    Könnte mir da einer helfen !
    ...

    Schreib doch mal für Dich auf, was Du genau tust, wenn Du es "manuell" machst. Daraus ergibt sich eigentlich die Programmierung fast von selbst:
    "a(1,1) * b(1,1) + ....."
    Dann siehst Du selbst, wie sich die Indizes verändern (welcher "wandert nach oben" (und wie weit), welcher bleibt gleich, ....)

    Gruß,

    Simon2.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich finde überall im Netzt Bsp. zu zweidim. Arrays aber keins zu eindim. !!
    Jeder gibt mit gute Tipps aber keiner Hilft wirklich weiter.
    Kann den keiner mal schnell was coden !!!
    Ich sitze schon drei Tage daran und ich bekomms net hin.

    THX



  • Es geht nicht um "helfen können". Die Fähigkeiten hat hier vermutlich ein Großteil. Aber: Dir etwas Fertiggekautes zu geben, wird Dich nicht weiterbringen.

    Außerdem steht eine Hilfe doch schon da: Schreib detailliert auf, was genau Du beim "Rechnen auf Papier" machst, und dann bist Du schon einen großen Schritt weiter.
    Eine regelgerechte Rechtschreibung und der sparsame Gebrauch von "!" würden Deine Chancen auf Hilfe ebenfalls erhöhen.



  • Dann zeig halt mal deinen Code den du in den 3 Tagen gemacht hast.



  • Pseudeocode

    für alle zeilen aus matrix eins
       für alle spalten aus matrix zwei
           berechne ergebnis aus aktueller zeile und spalte
           trage ergebnis an aktueller position in ergebnis matrix ein
    

    fertig...

    Gruß
    zeigerzeiger

    Edit:
    matrix eins und matrix zwei und ergebnis matrix eingefügt...



  • kein plan, ob es stimmt:

    int matMul (float f1, float *mi1, int z1, int s1z2,
    float f2, float *mi2, int s2, float *mout)
    { int jz=0, js=0, jsz=0;

    for (jz=0; jz<z1; jz++)
    { for (js=0; js<s2; js++)
    { for (jsz=0;jsz<s1z2;jsz++)
    {
    mout[jz*s2+js] += f1*mi1[jz*jsz+jsz]*f2*mi2[jsz*s2+js];
    }
    }
    }
    return (1);
    }


Anmelden zum Antworten