How to produce a matrix with the following conditions?

1 Ansicht (letzte 30 Tage)
M
M am 13 Sep. 2022
Beantwortet: Walter Roberson am 15 Sep. 2022
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]

Akzeptierte Antwort

Sam Chak
Sam Chak am 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 Kommentare
Les Beckham
Les Beckham am 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
Sam Chak
Sam Chak am 13 Sep. 2022
Hi @Les Beckham, thanks for introducing the logical approach. 👍

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 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

Kategorien

Mehr zu Multidimensional Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by