필터 지우기
필터 지우기

choosing values with criteria from a set of values given

조회 수: 1 (최근 30일)
ker fang fang
ker fang fang 2015년 1월 12일
답변: Guillaume 2015년 1월 12일
hi, i need some help here. can someone teach me how to do the following?
for example, i have a set of values a = [ 1 5 6 10 15], then i have another set of values b = [ 1 0.8 0 -0.8 -1.8] , another set c = [3 2.4 0 -2.4 -5.4].
how do i do when i want the answer to be 'a' if the values in c is greater than a or 'b' if the values in c is less than a?
in this example the expected ans should be 'd' [ 1 0.8 0 -0.8 -1.8] ? how do i make that?

답변 (3개)

Azzi Abdelmalek
Azzi Abdelmalek 2015년 1월 12일
out=a
out(c<a)=b(c<a)

Stalin Samuel
Stalin Samuel 2015년 1월 12일
a = [ 1 5 6 10 15], b = [ 1 0.8 0 -0.8 -1.8] c = [3 2.4 0 -2.4 -5.4]
a1=sum(a) b1= sum(b) c1=sum(c) if c1>b1 result=a elseif c1<a1 result=b end
  댓글 수: 1
ker fang fang
ker fang fang 2015년 1월 12일
hi, but i want to display the values, instead of adding them up.

댓글을 달려면 로그인하십시오.


Guillaume
Guillaume 2015년 1월 12일
Use logical indexing. The expression c>a returns a logical array the same size as a and c with 1 where c is greater than a and 0 otherwise.
If you use this logical array to index into another array (e.g. a), then you only get those value of this other array for which the logical array is 1. Hence
a(c>a)
returns only those values of a where c is greater than a.
One possible solution is thus:
d = b
d(c>a) = a(c>a);
Note that you haven't said what should happen when a is equal to c, the above code assumes you want b.

카테고리

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