Create a submatrix with rows corresponding to a specified value in the first column of a matrix
2 次查看(过去 30 天)
显示 更早的评论
I have this matrix:
A=[ 1 10 2000; 0 25 3000; 1 15 1080; 0 29 2500]
with the first column containing 0 and 1.
I'd like to have two submatrices, the first containing only the value in the third column corresponding to the 0s in the first column, the other one for the 1s.
I created this code to do this:
A1=A(A==0,end)
A2=A(A==1,end)
But I would like to know if there's any possible day to end up with this result using loops.
I created this loop:
for i=1:4
if A(i)<1
A(A==0,end)
else
A(A==1,end)
end
end
But it gives me 4 answers, when I need only 2, the two submatrices I want to find.
How can I make a loop ending up in just two submatrices, to achieve the same result obtained with the former code?
Thank you.
0 个评论
采纳的回答
Nalini Vishnoi
2014-10-1
编辑:Nalini Vishnoi
2014-10-1
The loop is producing 4 answers since for each value of i, one matrix is created. You need a way to eliminate the rows that have already been selected from matrix A.
It can be done in several possible ways, one of which is provided below:
ind = [];
for i=1:4
if(ismember(i,ind)) % if the row has already been selected, skip
continue;
end
if A(i)<1
indtemp = find(A(:,1)==0); % keeps the record of selected rows in A
A(indtemp,end)
else
indtemp = find(A(:,1)==1); % keeps the record of selected rows in A
A(indtemp,end)
end
ind = [ind ; indtemp];
end
0 个评论
更多回答(1 个)
Guillaume
2014-10-1
First, your non-loop code only works because you don't have any 0 or 1 in any other column than the first. If you had a 0 or 1 in column 2 onward, you'd get an index exceeds matrix dimension error. The proper non loop syntax is:
A1 = A(A(:, 1) == 0, end); %make sure you're only comparing the 1st column
A2 = A(A(:, 1) == 1, end);
I'm not sure why you'd want to use loop, which is going to be slower but one way to do it:
A1 = []; A2 = [];
for r = 1:size(A, 1)
switch A(r, 1)
case 0
A1(end+1) = A(r, 3);
case 1
A2(end+1) = A(r, 3);
end
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!