MxM correlation Matrix output
1 view (last 30 days)
Show older comments
Given a vector
Vec = [ 0 1 2 3 4 5 6 7 8 9 ]
I want to use the vec value to obtain a matrix output as
0 1 2 3 4 5 6 7 8 9
1 0 1 2 3 4 5 6 7 8
2 1 0 1 2 3 4 5 6 7
3 2 1 0 1 2 3 4 5 6
mat = 4 3 2 1 0 1 2 3 4 5
5 4 3 2 1 0 1 2 3 4
6 5 4 3 2 1 0 1 2 3
7 6 5 4 3 2 1 0 1 2
8 7 6 5 4 3 2 1 0 1
9 8 7 6 5 4 3 2 1 0
Your input is highly appreciated. Thanks in advance
0 Comments
Accepted Answer
More Answers (1)
John D'Errico
on 23 Nov 2018
Edited: John D'Errico
on 23 Nov 2018
What does that even remotely have to do with a covariance matrix? :)
Now, IF your goal really is just to create that array, then try this:
vec = 0:9;
abs(vec - vec')
ans =
0 1 2 3 4 5 6 7 8 9
1 0 1 2 3 4 5 6 7 8
2 1 0 1 2 3 4 5 6 7
3 2 1 0 1 2 3 4 5 6
4 3 2 1 0 1 2 3 4 5
5 4 3 2 1 0 1 2 3 4
6 5 4 3 2 1 0 1 2 3
7 6 5 4 3 2 1 0 1 2
8 7 6 5 4 3 2 1 0 1
9 8 7 6 5 4 3 2 1 0
The above will work as long as you are using at least R2016b or MATLAB. Older releases will require tools like bsxfun, or even meshgrid.
It is a bit unclear because again, this has nothing to do with a covariance matrix, except that both are symmetric matrices.
0 Comments
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!