How to produce a matrix with the following conditions?

1 view (last 30 days)
How to produce a matrix which size is 7*7 and contains all possible single locations of a certain value and the rest of the column's values are 1. For example : The value is 0.4 and I want to produce seven columns of different single locations of 0.4 and the other values are 1 such as: [0.4 1 1 1 1 1 1; 1 0.4 1 1 1 1 1; 1 1 0.4 1 1 1 1; 1 1 1 0.4 1 1 1; 1 1 1 1 0.4 1 1; 1 1 1 1 1 0.4 1; 1 1 1 1 1 1 0.4]

Accepted Answer

Sam Chak
Sam Chak on 13 Sep 2022
Hi @M
Maybe like this?
M = ones(7)
M = 7×7
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
I = eye(7)
I = 7×7
1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
v = 0.4;
u = repelem(v, 7)
u = 1×7
0.4000 0.4000 0.4000 0.4000 0.4000 0.4000 0.4000
D = diag(u)
D = 7×7
0.4000 0 0 0 0 0 0 0 0.4000 0 0 0 0 0 0 0 0.4000 0 0 0 0 0 0 0 0.4000 0 0 0 0 0 0 0 0.4000 0 0 0 0 0 0 0 0.4000 0 0 0 0 0 0 0 0.4000
Solution = M - I + D
Solution = 7×7
0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000
  2 Comments
Les Beckham
Les Beckham on 13 Sep 2022
Or, with a few less steps:
M = ones(7);
M(logical(eye(7))) = 0.4
M = 7×7
0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 15 Sep 2022
M = ones(7);
C = M;
C(logical(eye(7))) = 0.4
C = 7×7
0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000
%or
M = ones(7);
C = M;
C(1:size(C,1)+1:end) = 0.4
C = 7×7
0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000
%or
M = ones(7);
C = M - 0.6 * eye(size(M))
C = 7×7
0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.4000

Categories

Find more on Multidimensional Arrays 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!