Ich versuche, Schleifen zu vermeiden, indem ich apply
verwende, um eine benutzerdefinierte Funktion auf eine Matrix anzuwenden. Das Problem, das ich habe, ist, dass es zusätzliche Parameter gibt, die meine Funktion verwendet, und sie unterscheiden sich für jede Spalte der Matrix. Unten ist ein Spielzeugbeispiel.
Sagen wir, ich habe die folgende Funktion:
%Vor% und ich möchte es auf eine Matrix bar
mit verschiedenen Werten von a
, b
und c
für jede Spalte anwenden.
In diesem Fall für die erste Spalte von bar
, dann a=4
, b=3
und c=1
. Ich habe es versucht,
Dies ist jedoch eindeutig falsch, da jede Spalte alle Parameter nacheinander verwendet, bevor sie wieder zum ersten Parameter zurückkehrt. Irgendwelche Vorschläge?
Ich versuche, Schleifen zu vermeiden, indem ich sweep
verwende, um eine benutzerdefinierte Funktion auf eine Matrix anzuwenden. Das Problem, das ich habe, ist, dass es zusätzliche Parameter gibt, die meine Funktion verwendet, und sie unterscheiden sich für jede Spalte der Matrix. Unten ist ein Spielzeugbeispiel.
Sagen wir, ich habe die folgende Funktion:
%Vor%und ich möchte es auf eine Matrix %code% mit verschiedenen Werten von %code% , %code% und %code% für jede Spalte anwenden.
%Vor%In diesem Fall für die erste Spalte von %code% , dann %code% , %code% und %code% . Ich habe es versucht,
%Vor%Dies ist jedoch eindeutig falsch, da jede Spalte alle Parameter nacheinander verwendet, bevor sie wieder zum ersten Parameter zurückkehrt. Irgendwelche Vorschläge?
Wir könnten %code% den 'Balken' durch 'Spalte' ( %code% ) und mit %code% können wir 'foo' für die entsprechenden 'a', 'b', 'c' Werte für jede Spalte anwenden von 'bar'
%Vor%Oder ohne %code%
zu verwenden %Vor%Ich denke, dass Sie einfach Ihre Matrix transponieren und Vektorisierung verwenden können:
%Vor%Dies sollte für jede vektorisierte %code% funktionieren.
Sie können %code% ; Normalerweise wird hier der Mittelwert aus jeder Spalte subtrahiert, aber Sie können stattdessen einen Index übergeben, um eine parallele Indexierung über a, b und c zu erhalten:
%Vor%Ich verstehe nicht, warum Sie sich überhaupt mit einer Funktion beschäftigen:
%Vor%Sie könnten Ihre Parameter in den Vektor einfügen:
%Vor%was
ergibt %Vor%