Matrix sortieren < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:28 Mi 24.04.2013 | Autor: | mikexx |
Aufgabe | Erzeugen Sie die Matrix A als magisches Quadrat der Ordnung 4.
Sortieren Sie die Einträge von A so, dass jeder Eintrag kleiner als der darunterliegende Eintrag und kleiner als der Eintrag links daneben ist. |
Hallo!
Also zunächst habe ich also
A=magic(4)
erzeugt. Das hat bei mir die Matrix
[mm] A=\pmat{ 16 & 2 & 3 & 13 \\ 5 & 11 & 10 & 8 \\ 9 & 7 & 6 & 12 \\ 4 & 14 & 15 & 1 }
[/mm]
ergeben.
Meine Idee wäre nun:
1: | B=sort(A);
| 2: | C=sort(B','descend');
| 3: | D=C'; |
Dann müsste doch D die gesuchte sortierte Matrix sein? Meine Probe sagt: Ja.
Aber geht das nicht vielleicht auch einfacher?
Viele Grüße
mikexx
|
|
|
|
> Erzeugen Sie die Matrix A als magisches Quadrat der Ordnung 4.
>
> Sortieren Sie die Einträge von A so, dass jeder Eintrag
> kleiner als der darunterliegende Eintrag und kleiner als
> der Eintrag links daneben ist.
>
>
>
>
> Hallo!
>
> Also zunächst habe ich also
>
> A=magic(4)
>
> erzeugt. Das hat bei mir die Matrix
>
> [mm]A=\pmat{ 16 & 2 & 3 & 13 \\ 5 & 11 & 10 & 8 \\ 9 & 7 & 6 & 12 \\ 4 & 14 & 15 & 1 }[/mm]
>
> ergeben.
>
>
> Meine Idee wäre nun:
>
> 1: | B=sort(A);
| 2: | > C=sort(B','descend');
| 3: | > D=C'; |
>
> Dann müsste doch D die gesuchte sortierte Matrix sein?
> Meine Probe sagt: Ja.
>
> Aber geht das nicht vielleicht auch einfacher?
>
> Viele Grüße
>
> mikexx
Hallo mikexx,
ich habe Mühe, bei dieser Aufgabe einen Sinn zu
erkennen.
Beim "Sortieren" geht ja die "magische" Eigenschaft
der Matrix flöten.
Da die Originalmatrix genau die natürlichen Zahlen
von 1 bis 16 enthält, kann man ganz leicht eine
"sortierte" Matrix mit den gewünschten Eigenschaften
hinschreiben, ohne überhaupt den Computer einzu-
schalten ...
Oder habe ich da etwas Wichtiges missverstanden ?
LG , Al-Chw.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:30 Mi 24.04.2013 | Autor: | mikexx |
Hallo, diese Aufgabe soll keinen tieferen Sinn haben, sie soll lediglich den Umgang mit Matlab trainieren und elementare Dinge wie Sortieren etc. einüben.
|
|
|
|
|
> Hallo, diese Aufgabe soll keinen tieferen Sinn haben, sie
> soll lediglich den Umgang mit Matlab trainieren und
> elementare Dinge wie Sortieren etc. einüben.
Ja, ich habe mir dies dann auch so gedacht, und
ich habe kurz nachgeschaut, was der Befehl 'sort'
in Matlab mit einer Matrix macht und wie die
Transponierte einer Matrix dort notiert wird.
Dann scheint dein Lösungsweg zum Ziel zu
führen, also zu einer Matrix, welche die
gestellten Bedingungen erfüllt.
So wie es aussieht, gäbe es jedoch auch viele
andere 4x4 - Matrizen mit denselben Elementen,
welche die geforderten Eigenschaften ebenfalls
aufweisen.
Beispiel: [mm] $\pmat{5&3&2&1\\11&7&6&4\\12&10&9&8\\16&15&14&13}$
[/mm]
Man könnte also die Aufgabe wohl durch weiter
gehende Fragestellungen ergänzen. Das war aber
wohl auch gar nicht gemeint ...
LG , Al-Chw.
|
|
|
|
|
Sonst würde ich mich zurück halten, wenn es um einfachere Lösungen geht.
Aber hier wird es nicht einfacher gehen.
Wohlmöglich geht es nicht wesentlich kürzer (deine Version in einer Zeile):
sort(sort(magic(4))','descend')'
(in 32 Zeichen)
Aber das weiß du bestimmt schon. Selbst eine Alternative
fliplr(reshape(sort(reshape(magic(4).',1,[])),4,4)')
(in 53 Zeichen)
oder
rot90(reshape(sort(reshape(magic(4),1,[])),4,4),3)
(50 Zeichen)
sind nicht kürzer oder gar verständlicher.
wieschoo
edit: Ah doch!
rot90(sort(sort(magic(4))'),3)
Ist aber auch nur kürzer (30 Zeichen). Einfacher wird es dadurch nicht
|
|
|
|