A very quick question

조회 수: 2 (최근 30일)
Radoslav Gagov
Radoslav Gagov 2017년 4월 12일
댓글: Radoslav Gagov 2017년 4월 12일
Hello Guys. Can you tell me how can I write a code that is like
>> [ida,idb] = ismember('1','1 0 0 1')
ida =
logical
1
idb =
1
but the outpoot i need is
idb =
[1 4]
I suppose it can be made with a double loop or smth, but I am looking for a simpler way.
  댓글 수: 2
Stephen23
Stephen23 2017년 4월 12일
편집: Stephen23 2017년 4월 12일
@Radoslav Gagov: do the inputs have to be strings ? Or can they be numeric?
Radoslav Gagov
Radoslav Gagov 2017년 4월 12일
Normally they are numeric or logical

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

답변 (2개)

David J. Mack
David J. Mack 2017년 4월 12일
편집: David J. Mack 2017년 4월 12일
Hey Radoslav,
In general, to convert a logical array to ids use find.
If you are working on numbers (as implied in your example) try
idb = find(ismember(1,[1 0 0 1])) % No quotes!
If you work on strings, either use a "set" with a cellstr:
idb = find(ismember('1',{'1','0','0','1'}))
Or better, use strfind without the spaces.
str = '1 0 0 1';
idb = strfind('1',str(~isspace(str))); % Remove spaces
Hope that helps.
Greetings, David

Andrei Bobrov
Andrei Bobrov 2017년 4월 12일
편집: Andrei Bobrov 2017년 4월 12일
A = '1 0 0 1';
B = '1';
An = A - '0';
Bn = B - '0';
An = An(An >= 0);
Bn = Bn(Bn >= 0);
idb = find(Bn == An);
for numeric
idb = find(B == A);
  댓글 수: 2
Radoslav Gagov
Radoslav Gagov 2017년 4월 12일
Hmm that works thanks. Can you just explain to me why do we make that An = A - '0'. What does this like actually do ?
Radoslav Gagov
Radoslav Gagov 2017년 4월 12일
O yes i found out why. U are transforming the chars in to numbers, but i still dont get it what does - '0' does.

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

카테고리

Help CenterFile Exchange에서 Sparse Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by