I have a matrix and I am actually interested in obtaining a vector that will consist of the first column in each row that has values lower certain value.

2 vues (au cours des 30 derniers jours)
I have a matrix and I am actually interested in obtaining a vector that will consist of the first column in each row that has values lower 3. e.g if I have A=[ 5 7 8 3 2 ;6 2 1 4 4;1 2 3 4 5; 4 5 2 1 3]. I expect an Ans: [5;2;1;4]

Réponse acceptée

Saint
Saint le 29 Mai 2017
Modifié(e) : Saint le 29 Mai 2017
Thanks Star Strider and MathsReallyWork. I kind of figure it out.Ans: [5;2;1;3]
dmax=3
Nrows=4
A=[5 7 8 3 2 ;6 2 1 4 4;1 2 3 4 5; 4 5 2 1 3]
for i=1:Nrows
B=A(i,:)';
a(i)=find(B<dmax,1,'first') ;
end
b=a'
  1 commentaire
Stephen23
Stephen23 le 29 Mai 2017
Modifié(e) : Stephen23 le 29 Mai 2017
It is simpler and more efficient to process the whole array at once, rather than using a loop:
>> C = A.';
>> idx = C<dmax;
>> [col,row] = find(idx & cumsum(idx,1)==1)
col =
5
2
1
3
row =
1
2
3
4

Connectez-vous pour commenter.

Plus de réponses (1)

MathReallyWorks
MathReallyWorks le 27 Mai 2017
Hello saint,
Your question is not clear. Please edit it.
By the description of your question I can guess that you want first column of each row provided that entry is less than 3. In that case this code works well:
A = [ 5 7 8 3 2 ;6 2 1 4 4;1 2 3 4 5; 4 5 2 1 3];
newA = A(A(:,1)<3,1)
But, then you said you are expecting [5;2;1;4] which is contradictory to your question.
[5;6;1;4] is possible as it contains all first element.

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by