L = length (A); temp = repmat(A, L, 1); temp(1:L+1:end) = [] ; B = reshape(temp,L-1,[]);
creating array based in another array
20 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Khairul Nur
am 11 Aug. 2021
Kommentiert: Khairul Nur
am 16 Aug. 2021
Hi, i have an array nx1 (refer array 1 as below) and i want to create 2nd array based on the 1st array as follow:
array 1:
1
2
3
4
5
For example:
Loop 1: read 1st index array 1 which is 1, array 2 will be
array 2: 2 3 4 5
Loop 2: read 2nd index array 1 which is 2, array 2 will be
array 2: 1 3 4 5
Loop 3: read 3rd index array 1 which is 3, array 2 will be
array 2: 1 2 4 5
and so forth.
Is it possible without using for loops?
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 11 Aug. 2021
Weitere Antworten (1)
Fabio Freschi
am 11 Aug. 2021
Here a possible solution, where all arrays you want are in the columns of matrix a2
% number of entries in array 1
n = 5;
% create array 1
a1 = (1:n).';
% create matrix a2 as column vector
a2 = repmat(a1,n,1)
% remove diagonal entries
a2(1:n+1:n^2) = [];
% reshape a2 to obtain the matrix
a2 = reshape(a2,n-1,n);
The output is
a2 =
2 1 1 1 1
3 3 2 2 2
4 4 4 3 3
5 5 5 5 4
Siehe auch
Kategorien
Mehr zu Matrices and 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!