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 次查看(过去 30 天)
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]

采纳的回答

Saint
Saint 2017-5-29
编辑:Saint 2017-5-29
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 个评论
Stephen23
Stephen23 2017-5-29
编辑:Stephen23 2017-5-29
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

请先登录,再进行评论。

更多回答(1 个)

MathReallyWorks
MathReallyWorks 2017-5-27
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.

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by