error using unique function

22 ビュー (過去 30 日間)
Danielle Leblanc
Danielle Leblanc 2012 年 7 月 26 日
s is a cell matrix (178000x9) I want to find the unique values of s in the first column. ID=unique(s(:,1));
I received the following error. Error using cell/unique (line 95) Input A must be a cell array of string
what could be the reason?
  1 件のコメント
Sean de Wolski
Sean de Wolski 2012 年 7 月 26 日
If the first column is all non-numeric it would not be throwing that error. What is returned from:
iscellstr(s(:,1))

サインインしてコメントする。

採用された回答

Mike Hosea
Mike Hosea 2012 年 7 月 26 日
編集済み: Mike Hosea 2012 年 7 月 26 日
What type of data is in the cell array? When you use UNIQUE on a cell array, the only case that's supported is when the elements of the cell array are strings. Is that case not working for you?
>> c = {'abc','abc','def','defg'}';
>> unique(c(:,1))
ans =
'abc'
'def'
'defg'
  7 件のコメント
Mike Hosea
Mike Hosea 2012 年 7 月 26 日
Yes, this is what we expected. You do not have a cell array of only strings. You can find the non-strings with
find(cellfun(@(x)~ischar(x),s))
You do not mention where this data came from. If it began as a
s = cell(m,n);
and was later partially populated, then you might resolve the problem by changing that to
s = repmat({''},m,n);
Danielle Leblanc
Danielle Leblanc 2012 年 7 月 26 日
Thanks this solved the problem

サインインしてコメントする。

その他の回答 (1 件)

Wayne King
Wayne King 2012 年 7 月 26 日
編集済み: Wayne King 2012 年 7 月 26 日
Is it a cell array of numeric values?
You can use cell2mat()
A = {1 5 9 ; 2 3 4; 2 4 5};
B = unique(cell2mat(A(:,1)));
  1 件のコメント
Danielle Leblanc
Danielle Leblanc 2012 年 7 月 26 日
column 1 contains names . it is non-numeric

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by