How to mirror matrix on the diagonal?
Show older comments
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 Comments
Massimo Zanetti
on 21 Oct 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
on 21 Oct 2016
Accepted Answer
More Answers (2)
Massimo Zanetti
on 21 Oct 2016
Edited: Massimo Zanetti
on 21 Oct 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 Comments
Massimo Zanetti
on 22 Oct 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
on 13 Aug 2020
0 votes
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);
Categories
Find more on Logical in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!