How to mirror matrix on the diagonal?
Ältere Kommentare anzeigen
I want to mirror data matrix on the diagonal.
Input:
y
|
____ x
Expected output:
x
|_y
I know you these transformations but I cannot get mirror around the diagonal (y=x line from (0,0) to (1,1))
I = imread('onion.png');
I2 = flipdim(I ,2); %# horizontal flip
I3 = flipdim(I ,1); %# vertical flip
I4 = flipdim(I3,2); %# horizontal+vertical flip
MATLAB: 2016b OS: Debian 8.5
2 Kommentare
Massimo Zanetti
am 21 Okt. 2016
Can you give a simple example with numeric array of the "mirroring" you need? Is it something like:
1 2 3
4 5 6
7 8 9
to
9 6 3
8 5 2
7 4 1
?
SL
am 21 Okt. 2016
Akzeptierte Antwort
Weitere Antworten (2)
Massimo Zanetti
am 21 Okt. 2016
Bearbeitet: Massimo Zanetti
am 21 Okt. 2016
In the case described before it is:
A=[1 2 3;4 5 6;7 8 9]
rot90(A,2)'
which gives:
A= 1 2 3
4 5 6
7 8 9
to
9 6 3
8 5 2
7 4 1
3 Kommentare
Massimo Zanetti
am 22 Okt. 2016
I can't see why it shouldn't work... You must give me an example, otherwise I cannot understand. No problems with rectangular matrices.
The transpose operator doesn't work on anything other than a 2D array, but you can still use permute().
A = repmat([1 2 3;4 5 6;7 8 9],[1 1 3])
B = permute(rot90(A,2),[2 1 3]) % use permute()
C = pagetranspose(rot90(A,2)) % or use pagetranspose() (R2020b or newer)
That said, if the OP isn't aware of the array dimensionality, then there are probably other problems.
Fady Samann
am 13 Aug. 2020
0 Stimmen
you can do the following:
first, transpose the matrix
A = table.';
Flip it horizontally
A = flip (A,1);
then, flip it verticaly
A = flip (A,2);
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!