/ / Ich brauche Hilfe, um die Funktionen von Matlab [duplicate] - matlab zu verstehen

Ich brauche Hilfe, um die Funktionen von Matlab [duplicate] - matlab zu verstehen

Kann mir jemand die Lösung dieser Aufgabe erklären:

Übung

Schreiben Sie eine Funktion namens odd_index, die eine Matrix nimmt, M, als Eingabeargument und gibt eine Matrix zurück, die nur Elemente von enthält M Diejenigen, die in ungeraden Zeilen und Spalten stehen. Mit anderen Worten, es würde die Elemente von zurückgeben M bei Indizes (1,1), (1,3), (1,5), ..., (3,1), (3,3), (3,5) ,…, Usw. Beachten Sie, dass sowohl die Zeile als auch die Spalte eines Elements ungerade sein müssen, um in die Ausgabe einbezogen zu werden. Folgendes wird nicht zurückgegeben: (1,2), (2,1), (2,2) Weil entweder die Zeile oder die Spalte oder beide gerade sind. Als Beispiel, wenn M Handelte es sich um eine 5-mal-8-Matrix, muss die Ausgabe dann 3-mal-4 sein, da die Funktion die Zeilen 2 und 4 von weglässt M und es werden auch die Spalten 2, 4, 6 und 8 von weggelassen M .

Lösung:

 M_out = odd_index function (M)
M_out = M (1: 2: end, 1: 2: end);
end

Link-Lösung: Gibt nur ungerade Elemente zurück

Kann mir jemand erklären, wie sie auf die Funktion gekommen sind M_out = M (1: 2: end, 1: 2: end) ;.

Antworten:

1 für die Antwort № 1
function M_out = odd_index (M)
M_out = M(1: 2: end, 1: 2: end);
end

Ich nehme jeden ungerade Element der Matrix M und gibt das an eine Matrix zurück M_out,

M = [1 2 3; 4 5 6;7 8 9];
M_out = odd_index(M)

M_out =

1     3
7     9

wo Sie diese Elemente in einer ungeraden Zeile sehen können und auf einer ungeraden Spalte werden gedruckt, aber die Elemente auf geraden Zeilen und geraden Spalten werden ausgelassen.

Der Trick dabei ist, die Indizes in Schritten von 2 anstelle von 1 zu durchlaufen. M(1,1) gibt das Element in der linken oberen Ecke von an Md.h. 1. M(1:2,1) gibt die ersten beiden Elemente in der linken Spalte zurück: 1 und 4. Dies geschieht, weil n:m Erzeugt einen Vektor von Zahlen, von denen aus n zu m in Schritten von 1. Sie können diese Schrittgröße ändern, indem Sie eine Zahl hinzufügen: n:x:m, woher x Gibt an, wie groß Ihre Schritte sind. Da die ungeraden Zahlen 2 voneinander entfernt sind, beginnen Sie Ihren Vektor einfach mit der niedrigsten, positiven, ungeraden Zahl 1 und gehen Sie zu Schritt 2. Das letzte Element in Ihrem Vektor 1:2:end bedeutet einfach "das Ende des Vektors", also wenn M = [5x3] das end von den Reihen ist 5, weil es fünf Reihen gibt, und das end von den Spalten wäre 3, da es drei Spalten gibt.