Ich möchte eine 36 * 45-dimensionale Matrix in MATLAB erstellen, aber die Spalten werden in einer Schleife gefüllt. Zu Beginn habe ich nur eine Matrix von 36 * 1 als Anfangswerte, die in der ersten Spalte zu füllen sind, und nach und nach, indem ich die Schleife durchführe, werden die restlichen Spalten gefüllt. Es ist wichtig zu wissen, dass die Größe der großen Matrix (36 * 45) von Anfang an bekannt sein sollte.Wie erstellt man eine große Matrix in MATLAB und füllt sie schrittweise in einer Schleife?
Antwort
Sie müssen etwas über MATLAB Grundlagen lernen. Ich schlage vor, dass Sie das tun. Der Code würde wie folgt aussehen:
A=zeros(36,45);
for ii=1:size(A,2);
A(:,ii) = %here comes a 36x1 matrix
end
hier über Matrix Indizierung Lernen: https://uk.mathworks.com/company/newsletters/articles/matrix-indexing-in-matlab.html?refresh=true
Manchmal fülle ich die Matrix in rückwärts. Dies verhindert die Notwendigkeit einer separaten Zuweisungsleitung, und manchmal ist es ein wenig einfacher. (ZB wenn in einer Anordnung von Strukturen mit unbestimmten Felder ausfüllen)
die wie folgt aussieht:
for ix = numColumns:-1:1
results(:,ix) = <function generating results>; %No pre-allocation required
end
Unrelated aber interessante Seite Kommentar unten
Für einige eher bizarre Gründe, Ich denke, das ist eigentlich etwas schneller als ein zeros()
Aufruf für sehr große Matrizen. Sie können dies sehen, indem Sie die folgenden Vergleich:
tic; for ix=1:1000; x = zeros(1000); end; toc
%1.18 second on my current computer
tic; for ix=1:1000; clear('y'); y(1000,1000)=0; end; toc
%0.032 seconds on my current computer
er eine gute Beschreibung der Ursache für diese irgendwo auf Stackoverflow gesehen habe, aber es kann nicht sofort finden.
Nein ist es nicht. Vorabzuweisen ist * immer * schneller. –
Beim Rückwärts-Iterieren wird beim ersten Mal eine vollständige Zuweisung durch die Schleife ausgeführt. Dies bietet alle Vorteile der Vorabzuweisung. Die bizarre Beschleunigung ist ein Effekt zweiter Ordnung, der verursacht wird, weil 'x = Nullen (n)' merklich langsamer ist als 'x (n, n) = 0', für große Werte von 'n'. – Pursuit
humm Es kann sein. Allerdings ist es auch versionsspezifisch. –
- 1. Wie füllt man eine Matrix mit einer Gleichung in MATLAB?
- 2. Wie man eine sehr große Matrix mit Matlab erstellt
- 3. Schrittweise Reduzierung des Eingabedatenrahmens in einer Schleife
- 4. Wie erstellt man eine GUI in einer Funktion in MATLAB?
- 5. fprintf für große Matrix in Matlab
- 6. Wie man Textfelder in MATLAB liest und eine einzige Matrix erstellt
- 7. Wie erstellt man eine Kantenliste aus einer Matrix in R?
- 8. Lösen einer Matrix in MATLAB?
- 9. Wie R-Daten in eine Matlab Matrix
- 10. Wie erstellt man eine Matrix in einer einfachen Korrespondenzanalyse?
- 11. Wie erstellt und füllt man eine ZIP-Datei mit ASP.NET?
- 12. R eine Matrix in einer Schleife füllen
- 13. Grepping schrittweise durch große Datei
- 14. Wie entfernt man letzte n Elemente einer Matrix in Matlab?
- 15. Einfügen einer Matrix in eine andere Matrix mit Matlab
- 16. eine große Matrix in LaTeX
- 17. Matlab, Wie man Elemente in einer Matrix mit zwei Arrays
- 18. Wie erstellt man eine leere Matrix in R?
- 19. Kombinieren einer Matrix von Werten und Indizes in MATLAB
- 20. MATLAB: Interpolation, die eine Matrix
- 21. Wie interpoliere ich eine Matrix in MATLAB?
- 22. Matrix unbekannter Länge in MATLAB?
- 23. Wie konvertiert man eine Site schrittweise in CodeIgniter?
- 24. Wie kann ich eine sehr große MATLAB-Sparse-Matrix in einer Textdatei speichern?
- 25. Erstellen Sie eine Adjazenz Matrix Matlab
- 26. füllen Sie eine Matrix nach Zeilen in einer Schleife
- 27. Wie erstellt man eine Matrix von Listen in R?
- 28. Kompakte MATLAB-Matrix-Indexierungsnotation
- 29. Wie man Zeile mit Trennzeichen in Matlab füllt
- 30. Matlab Matrix Funktionen in Java
Ändern Sie einfach A (:, 1) zu A (:, ii). Ich würde die Bearbeitung selbst tun, aber so beschwert sich über die Bearbeitung zu kurz sein :) – Chris
@Chris danke, tat dies in Eile –