check cell's contents and convert to matrix
2 ビュー (過去 30 日間)
古いコメントを表示
i have a data cell as below:
when i use
param1=cell2mat(data(:,2));
param2=cell2mat(data(:,6));
param3=cell2mat(data(:,7));
it gives error:
??? Error using ==> cell2mat at 47
All contents of the input cell array must be of the same data type.
So, every time there is a string in cell matrix MATLAB Gives error and i correct it by hand.
Is there a method that makes this:
param1=cell2mat(data(:,2));
If one of the members of cell is string, than assign that to value of zero??
Thank you very much
5 件のコメント
Walter Roberson
2011 年 5 月 27 日
For me it appears in the section underneath "click to add tags". I had to temporarily allow tinypic.com but I did not have to allow any of the other sites the page wants (photobucket, gigya, z25, or others.)
http://oi56.tinypic.com/33ylu1z.jpg
should be the direct link.
Jan
2011 年 5 月 28 日
Thanks Walter! Following your link I can see the table without any tricks. This is another argument to host pictures on a Mathworks server.
採用された回答
Laura Proctor
2011 年 5 月 27 日
The following code will find any strings in your input data and replace them with NaN values then converts the cell array to a matrix. You can use any value to replace the strings... it's just that NaN may be appropriate for this case.
c = { 1; 2 ; 3 ; 'aa ' ; 4 ; 10 ; ' '};
ival = cellfun(@ischar,c)
c(ival) = {NaN}
b = cell2mat(c)
1 件のコメント
Jan
2011 年 5 月 27 日
The OP asked for zeros explicitely. CELLFUN(@ischar, C) and CELLFUN('isclass', C, 'char') is equivalent.
その他の回答 (6 件)
Andrei Bobrov
2011 年 5 月 28 日
idx = find(cellfun('isclass',data,'char'));
data(idx) = data(idx-1)
1 件のコメント
Laura Proctor
2011 年 5 月 31 日
Are you guaranteed that there will not be two adjacent string values in the input matrix?
If so, then this should work for you:
if indices(1)
data(1,2) = data(2,2);
indices(1) = 0;
end
data(indices) = data([indices(2:end) 0]);
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Characters and Strings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!