2016-08-02 21 views
0

Ich habe eine Matrix der Bestellung 363 X 726. Jetzt wollte ich die letzten 1394-Elemente im Spalten-Haupt-Format entfernen, damit ich sie mit MATLAB in 512 X 512 Matrix umordnen kann. Einfach ausgedrückt, möchte ich die Umkehrung der Operationen durchführen, die ich in meiner vorherigen Frage gesehen habe: How to resize an image by adding extra pixels using matlab. Wie kann ich dies in MATLAB tun?Wie entfernt man letzte n Elemente einer Matrix in Matlab?

+0

Wie bestimmen Sie, welche 1394-Elemente zu entfernen sind? Reihenmajor? Spalte-Haupt? Zufällig? Willkürlich? Was ist, wenn die Information wichtig ist? – excaza

+0

Keine bestimmte Zeile oder Spalte, aber die letzten 1394 Elemente in der Matrix, warum, weil (363 * 726 = 263538) - (512 * 512 = 262144) = 1394. Also wollte ich die letzten 1394 Elemente entfernen, um die Matrixabmessungen zu erreichen. Diese Matrix bezieht sich auf ein Bild. Wenn ich also die zufälligen Elemente entferne, würden Informationen verloren gehen. Natürlich brauche ich diese letzten Elemente nicht, weil sie manuell für einige Operationen von mir selbst hinzugefügt werden. @ Excaza – sai

+0

"last" hat kein a spezifische Bedeutung für Arrays mit mehr als einer Dimension, daher die Frage – excaza

Antwort

2
A = rand(363,726);  % matrix of random elements with size 363x726 
A(end-1393:end)=[] ;  % removing last 1394 elements 
A = reshape(A,[512 512]); % Rearranging it into 512 rows and 512 columns 
+0

Danke @Sardar_Usama – sai

3

Vorausgesetzt, dass Ihre Matrix Sie arbeiten auf wollen, ist B genannt, könnten Sie auch B = reshape(B(1:512*512), 512, 512); gerade tun. Keine Notwendigkeit für eine temporäre Variable und das Entfernen der letzten 1394 Elemente ist implizit mit der Indizierung.

+0

Danke! @rayryeng – sai

+0

@sai Kein Problem. Wann immer Sie bereit sind, denken Sie daran, eine unserer Antworten zu akzeptieren, damit die Community weiß, dass Sie keine Hilfe mehr benötigen. Viel Glück! – rayryeng

Verwandte Themen