Wie der Titel sagt, möchte ich wissen, was Matlab zwischen den beiden Optionen unterscheidet. Aus Gründen der Argumentation, sagen wir mal, dass Matrix a
und idx
ausreichend groß sind, mit Speicherproblemen zu tun haben, und definieren:Performance/Low level Bedeutung von "a (idx) = []" vs "a = a (~ idx)"
- Fall A:
a(idx) = []
- Fall B:
a = a(~idx)
Meine Intuition sagt, dass in Fall A eine Wert-Neuzuordnung durchgeführt wird, die dann die CPU mit indizierten Kopien von ursprünglichen Positionen zu den neuen geordneten, während Keepi behandelt ng verfolgen, was der aktuelle "Kopf" der gleichen Matrix ist, und später den überschüssigen Speicher abschneidet.
Auf der anderen Seite würde Fall B eine indizierte Massenkopie auf einen neu zugewiesenen Speicherplatz ausführen.
Also wahrscheinlich Fall A ist langsamer, aber weniger Speicher als Case B. Ich nehme an, richtig? Ich weiß es nicht, sofort nachdem ich dies geschrieben habe, habe ich das Gefühl, dass Case B zuerst Case A ausführen muss ... Irgendwelche Ideen?
Vielen Dank im Voraus
Die Antwort hängt wahrscheinlich von den Größen von 'a' und' idx' ab, und vielleicht von der Matlab-Version. Warum nicht einfach [Zeit] (https://es.mathworks.com/help/matlab/ref/timeit.html) die beiden Optionen selbst? –