how can i change cell array to matrix
3 次查看(过去 30 天)
显示 更早的评论
I have excel mixed file and used [T,M,dat]=xlsread('Mol.xlsx')to import to matlab
dat= 'A' [12] [-20] [-75] [66] 'B' [9] [-10] [-50] [55] 'C' [15] [-25] [10 ] [45] 'D' [14] [-15] [5] [20]
I want to remove row if the value of column 3 is >= -15. so i used the following criteria, dat(dat(:,3)>=-15,:)=[] but i get the following error Undefined function or method 'ge' for input arguments of type 'cell'. how can i solve this problem?
0 个评论
采纳的回答
Guillaume
2015-3-16
Since you have mixed data types you can't convert the cell array into a matrix. You could just operate on the numeric matrix T and text matrix M with:
rowstodelete = T(:, 3) >= -15;
T(rowstodelete, :) = [];
M(rowstodelete, :) = [];
dat(rowstodelete, :) = [];
Simpler, would be to use a table which can handle mixed data types and has a more intuitive syntax than cell arrays. It's also dead easy to import excel data into a table:
t = readtable('Mol.xlsx'); %possibly that's all you need. If your excel file has no header row:
%t = readtable('Mol.xlsx', 'ReadVariableNames', false);
t(t(:, 3) >= -15, :) = [] %delete rows for which column 3 is >=-15
0 个评论
更多回答(2 个)
Giorgos Papakonstantinou
2015-3-16
编辑:Giorgos Papakonstantinou
2015-3-16
You can do the following to find which values are >=-15 :
dat= {'A' [12] [-20] [-75] [66] 'B' [9] [-10] [-50] [55] 'C' [15] [-25] [10 ] [45] 'D' [14] [-15] [5] [20]};
dat(cellfun(@(x) x>=-15 & ~ischar(x), dat)) = [];
Of course the result will be again a cell.
However, the T output argument from xlsread will be be of class double so there will be no need to go through the cellfun command.
You can see this with a minimum example:
values = {'A' [12] [-20] [-75] [66] 'B' [9] [-10] [-50] [55] 'C' [15] [-25] [10] [45] 'D' [14] [-15] [5] [20]};
xlswrite('myExample.xlsx',values);
filename = 'myExample.xlsx';
[T,M,dat] = xlsread(filename)
Then:
T =
12 -20 -75 66 NaN 9 -10 -50 55 NaN 15 -25 10 45 NaN 14 -15 5 20
If you want simply to remove them:
T(>=-15) = [];
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Import from MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!