Clear Filters
Clear Filters

contains 函数在运行相同代码时​,为什么返回了不同的​逻辑数组?

2 views (last 30 days)
笑天
笑天 on 22 May 2024
Edited: Voss on 22 May 2024
a=[ "水果店" "武汉水果店" "宜昌水果店" "襄阳水果店" "荆州水果店"
"饭店" "武汉饭店" "宜昌饭店" "襄阳饭店" "荆州饭店" ];
store_name ={'宜昌水果店','武汉水果店'};
T=contains(a,store_name{1});
T
T = 2x5 logical array
0 0 0 0 0 0 0 0 0 0
store_name ={'宜昌水果店','武汉水果店'};
T=contains(a,store_name{1});
T
T = 2x5 logical array
0 0 1 0 0 0 0 0 0 0

Accepted Answer

Voss
Voss on 22 May 2024
Edited: Voss on 22 May 2024
There is a hidden character at the beginning of the first store_name{1}
store_name ={'宜昌水果店','武汉水果店'};
+store_name{1} % character codes
ans = 1x6
65279 23452 26124 27700 26524 24215
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
which is not in the second store_name{1}
store_name ={'宜昌水果店','武汉水果店'};
+store_name{1} % character codes
ans = 1x5
23452 26124 27700 26524 24215
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
There are various ways to remove that extra character, e.g., using strrep:
store_name ={'宜昌水果店','武汉水果店'}; % 1st one again
+store_name{1} % character codes
ans = 1x6
65279 23452 26124 27700 26524 24215
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
store_name{1} = strrep(store_name{1},char(65279),'');
+store_name{1} % character codes
ans = 1x5
23452 26124 27700 26524 24215
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Now they are the same and produce the same result when checking against a.
a=[ "水果店" "武汉水果店" "宜昌水果店" "襄阳水果店" "荆州水果店"
"饭店" "武汉饭店" "宜昌饭店" "襄阳饭店" "荆州饭店" ];
store_name ={'宜昌水果店','武汉水果店'};
store_name{1} = strrep(store_name{1},char(65279),'');
T = contains(a,store_name{1})
T = 2x5 logical array
0 0 1 0 0 0 0 0 0 0
store_name ={'宜昌水果店','武汉水果店'};
T = contains(a,store_name{1})
T = 2x5 logical array
0 0 1 0 0 0 0 0 0 0

More Answers (0)

Categories

Find more on Multidimensional Arrays in Help Center and File Exchange

Products


Release

R2023b

Community Treasure Hunt

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

Start Hunting!