필터 지우기
필터 지우기

Comparing to string vectors

조회 수: 2 (최근 30일)
Inês Mendes
Inês Mendes 2015년 7월 8일
댓글: James Tursa 2015년 7월 8일
Hi guys,
I am having a lot of trouble comparing 2 arrays of strings.
For example, I have:
date = ['12-10-1992';'13-10-1992';'14-10-1992';'15-10-1992'];
date2=['13-10-1992';'14-10-1992'];
I want to compare them and find the position for which date 2 is equal to date.
I tried using find, ismember, intersect..none of them are working and i don´t understand why..
can anyone help please?
I would be much appreciated!
Inês
  댓글 수: 2
James Tursa
James Tursa 2015년 7월 8일
Please verify first what class of variables you have. What is class(date) and class(date2)?
Inês Mendes
Inês Mendes 2015년 7월 8일
they are both cell type..

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

채택된 답변

bmeyer
bmeyer 2015년 7월 8일
hey
The way you are defining your arrays causes them to be stored as type int. For example:
date = [12-10-1992;13-10-1992]; -----> date = [-1990,-1989]
date2 = [13-10-1992;14-10-1992]; -----> date2 = [-1989,-1988]
I suppose in this case, you would get lucky because comparing same "dates" would be comparing the integer values, which would turn out to be the same. However, if you actually want to comparing strings, you should define them like this:
date = ['12-10-1992','13-10-1992'];
date2 = ['13-10-1992','14-10-1992'];
Then
find(date == date2)
will return the indices at which the string values are the same
  댓글 수: 1
Inês Mendes
Inês Mendes 2015년 7월 8일
and if i have arrays with different sizes?

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

추가 답변 (1개)

James Tursa
James Tursa 2015년 7월 8일
The intersect function works for me, as long as I start with cell arrays as you have stated. E.g.,
>> date1 = {'12-10-1992';'13-10-1992';'14-10-1992';'15-10-1992'};
>> date2 = {'13-10-1992';'14-10-1992'};
>> [d i1 i2] = intersect(date1,date2)
d =
'13-10-1992'
'14-10-1992'
i1 =
2
3
i2 =
1
2
Can you verify again that you really have cell arrays?
  댓글 수: 2
Inês Mendes
Inês Mendes 2015년 7월 8일
my problem is that i have found examples of dates that are common to both arrays and they didn´t show in the intersect vector d (in your case)
James Tursa
James Tursa 2015년 7월 8일
Examine those exact mismatches in detail. Are they in exactly the same format? Do either of them have leading or trailing blanks? Etc. Once you know the cause of the mismatch and the formats you are working with, you can design code to deal with it.

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

카테고리

Help CenterFile Exchange에서 Dates and Time에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by