Exclusion of Columns in a matrix
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
My question is: I want to delete columns that possess the sum equal 1, however, when I use the function "for" occurs a problem....For each time that is deleted a column, the matrix is decreasing the number of columns, so that index used above exceed size of matrix....how can I solve this problem?
for j=1:794;
if S(j,1)==1;
X(:,j)=[];
end
end
when perform this command is showed:
??? Index of element to remove exceeds matrix dimensions.
thanks
0 commentaires
Réponse acceptée
Andrei Bobrov
le 3 Jan 2012
X = X(:,~abs(sum(X) - 1)<1e3*eps);
OR
S = sum(X);
X = X(:,~abs(S - 1)<1e3*eps);
OR
X = X(:,abs(sum(X) - 1)>1e3*eps);
e.g.
>> X = randi(23,5)
X =
7 12 18 23 20
16 23 6 13 6
16 8 12 4 19
4 14 17 4 6
3 6 21 6 22
>> X(:,3) = .2
X =
7 12 0.2 23 20
16 23 0.2 13 6
16 8 0.2 4 19
4 14 0.2 4 6
3 6 0.2 6 22
>> X = X(:,abs(sum(X) - 1)>1e3*eps)
X =
7 12 23 20
16 23 13 6
16 8 4 19
4 14 4 6
3 6 6 22
>>
3 commentaires
Andrei Bobrov
le 3 Jan 2012
in this is case not need use loops "for..end".
just use e.g.:
X = X(:,abs(sum(X) - 1)>1e3*eps);
Plus de réponses (0)
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!