How to select an array without element i
15 次查看(过去 30 天)
显示 更早的评论
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 个评论
Stephen23
2017-6-7
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 :)
采纳的回答
更多回答(3 个)
Jan
2017-6-7
编辑:Jan
2017-6-7
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
2017-6-7
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 个评论
Andrei Bobrov
2017-6-7
编辑:Andrei Bobrov
2017-6-7
n = numel(a);
V = reshape(nonzeros(repmat(a,1,n).*~eye(n)),[],n)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!