How to select an array without element i
14 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I want to select an array of a matrix without element i
so if
a =
1
4
7
11
n = 4
V = zeros(3,n)
i want to be able to select
a(:-i)
pseudo code:
for i = 1:n
V(:,1) = a(:-i) %so everthing from a except from element on i'th place
end
And then I want the output to be
V =
4 1 1 1
7 7 4 4
11 11 11 7
I hope someone can help me! sorry for bad englisch
1 commentaire
Stephen23
le 7 Juin 2017
Question for those who enjoy challenges: is there a solution which does not remove elements from a larger array? That would mean no setdiff, eye, etc, and extra points if it does not use a loop :)
Réponse acceptée
Plus de réponses (3)
Jan
le 7 Juin 2017
Modifié(e) : Jan
le 7 Juin 2017
While I prefer Stephen's or Andrei's vectorized solutions for the productive use, the actual question can be solved in a loop also:
a = [1; 4; 7; 11];
n = 4;
V = zeros(3, n);
for k = 1:n
V(:, k) = a(setdiff(1:n, k));
end
Or:
index = true(1, 4);
for k = 1:n
index(k) = false;
V(:, k) = a(index);
index(k) = true;
end
Or:
V = repmat(a, 1, n);
V(1:n+1:end) = [];
V = reshape(V, n-1, n);
Or:
[index, dummy] = find(~eye(n));
V = reshape(a(index), [], n)
H ZETT M
le 7 Juin 2017
This is not pretty, but it works:
a =[1;4;7;11]
n = 4
V = zeros(3,n)
for i=1:n
V(:,i)=a([1:i-1 i+1:end])';
end
0 commentaires
Andrei Bobrov
le 7 Juin 2017
Modifié(e) : Andrei Bobrov
le 7 Juin 2017
n = numel(a);
V = reshape(nonzeros(repmat(a,1,n).*~eye(n)),[],n)
0 commentaires
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!