Ich möchte meinen Code vereinfachen, weil es sehr zeitaufwendig ist. In meinem Problem ist R ungefähr 4000, also sollte Korr Funktion für mehr als 16000000 Zeiten angerufen werden. Kann ich diesen Code vereinfachen?Wie kann ich eine verschachtelte Schleife in Matlab vereinfachen?
for i=1:R
for j=1:R
Red1 = Red1 + abs(corr (SelectedData,i,j));
end
end
edit: Also, sollte ich sagen, dass, korr Funktion von mir geschrieben und es Korrelation zwischen zwei Funktionen berechnen.
und das ist meine korr Funktion:
function corr = corr (X, i, j)
covariance = (cov((X(:,i)),(X(:,j))));
corr = (covariance(1,2))/((sqrt(var(X(:,i)))) * (sqrt(var(X(:,j)))));
end
Zuerst sieht es aus wie Sie 'correlation' Funktion in der falschen Art und Weise verwenden: es muss 4 Argumente enthalten (5. ist nicht notwendig). Sehen Sie sich diese [Dokumentation] an (https://www.mathworks.com/help/antenna/ref/correlation.html?searchHighlight=correlation&s_tid=doc_srchtitle). Und die zweite: 'correlation' kann nicht funktioniert für' I 'und 'J' von Array-Typ, also denke ich, dass wir Schleife mit einigen' arrayfun' oder 'bsxfun' vermeiden können, aber wir noch verwenden, um' correlation' für 16m mal (4000 * 4000) ... Aber ich bin mir nicht sicher hier :) –
danke für Ihre Antwort @Mikhail_Sam; aber corrlation function ist eine von mir geschriebene Funktion. Ich habe meine Frage bearbeitet. –
Ah, okay! Dann rate ich Ihnen, es umzubenennen, um das Überschreiben des eingebauten Funktionsnamens zu vermeiden. Um Ihnen zu helfen, müssen wir seinen Code sehen: Vielleicht können wir einige Aktionen in ihn hinein vektorisieren! –