unique command and external Excel files

I have 50 EXCEL files. In Sheet 2 of each EXCEL file, there are mainly two columns called WA and CI. The program below should take these two columns and check if there are repeated values. I have attached one of the typical Excel files on here. The file is indexed 2.xlsx. The program has a for-loop on external files. The strange thing is that MATLAB says that CI has a repeated value but, checking the file, there is no repetition. If I copy the column CI in MATLAB. I execute the command length(CI) == length(unique(CI)). Then the result is 1. There are no repetead values. This corresponds to the truth because there are no repeated values in CI. I do not understand where I am wrong in this small program and why the two outcomes are different.
path_to_folder = '~/Desktop/75_3/';
for i=1:50
file = strcat(num2str(i),'.xlsx');
path_to_file = strcat(path_to_folder,file);
subset = xlsread(path_to_file,'Sheet2');
CI = subset(:,2);
length(CI) == length(unique(CI))
end

4 个评论

why the two outcomes are different? Which ones, CI and WA? Maybe they are unique for the first file, but not for the others?
I have corrected the post. The problem is just with CI. Thanks.
The problem is still in the post -- I don't know what you did, but clearly the attached file has a duplicated entry in the second column, whatever you name the variable isn't going to either make it appear or go away.
>> CI=d(:,2);
>> length(CI)==length(unique(CI))
ans =
logical
0
>>
Whether the values are in the original array or a copy in another variable does not change the symptoms...
Even running the same code doesn't make any differenc--
>> path_to_folder = '';
for i=2:2
file = strcat(num2str(i),'.xlsx');
path_to_file = strcat(path_to_folder,file);
subset = xlsread(path_to_file,'Sheet2');
CI = subset(:,2);
length(CI) == length(unique(CI))
end
ans =
logical
0
>>
You are right. I have accepted your answer, The repeated value is in the column CI (not in WA). But this does not make any difference. I think I had a look at the wrong column. The duplicate exists, you are right.

请先登录,再进行评论。

 采纳的回答

Well, there is a duplicate in the 2nd column...
>> d=xlsread('x.xlsx','Sheet2');
>> arrayfun(@(i)numel(unique(d(:,i)))==numel(d(:,i)),[1:2])
ans =
1×2 logical array
1 0
>>
> sd=sort(d(:,2));
>> find(diff(sd)==0)
ans =
71
>> sd(70:72)
ans =
0.759021496168829
0.765957446808511
0.765957446808511
>> [u,iu]=unique(d(:,2));
>> whos u
Name Size Bytes Class Attributes
u 74x1 592 double
>>

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Data Import from MATLAB 的更多信息

产品

版本

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by