Matlab 将单元格的列更改为一种类型

Matlab 将单元格的列更改为一种类型,matlab,matrix,casting,cell,Matlab,Matrix,Casting,Cell,这是我数据的一部分:它实际上是一个1x7单元,这是PM25{1,1}的一部分 数据可在此处找到: 变量为PM25 '42.493056' '-92.343889' '19-013-0008' [733043] [ NaN] '42.493056' '-92.343889' '19-013-0008' [733044] [ NaN] '42.493056' '-92.343889' '19-013-0008' [733045]

这是我数据的一部分:它实际上是一个1x7单元,这是PM25{1,1}的一部分 数据可在此处找到: 变量为PM25

'42.493056'    '-92.343889'    '19-013-0008'    [733043]    [ NaN]
'42.493056'    '-92.343889'    '19-013-0008'    [733044]    [ NaN]
'42.493056'    '-92.343889'    '19-013-0008'    [733045]    '3.6' 
'42.493056'    '-92.343889'    '19-013-0008'    [733046]    [ NaN]
'42.493056'    '-92.343889'    '19-013-0008'    [733047]    [ NaN]
'42.493056'    '-92.343889'    '19-013-0008'    [733048]    '10'  
'42.493056'    '-92.343889'    '19-013-0008'    [733049]    [ NaN]
'42.493056'    '-92.343889'    '19-013-0008'    [733050]    [ NaN]
'42.493056'    '-92.343889'    '19-013-0008'    [733051]    '5.8' 
'42.493056'    '-92.343889'    '19-013-0008'    [733052]    [ NaN]
'42.493056'    '-92.343889'    '19-013-0008'    [733053]    [ NaN]
'42.493056'    '-92.343889'    '19-013-0008'    [733054]    '7.7' 
是否可以将此单元格数组转换为矩阵?我试过str2double和cell2mat。 我想根据第5列对其进行排序(我尝试了
sortrows
和FileExchange
sortcell.m
),但它告诉我第5列的数据类型不同

我试着转换整个矩阵,但那不是我想要的方式

for i = 1:7
    str2double(PM25{i}) % Turns the 3rd and 4th columns to NaN.
    cell2mat(PM25{i}) % Gives this error: `Error using cell2mat. All contents of the input cell array must be of the same data type.`
end
我怎样才能克服这个问题


如果无法转换,我希望至少能够将上面最后一列转换为所有1x7单元格的一种数据类型(str2double仅转换一个单元格),以便使用
sortcell
。否则,我必须将第5列转换为双精度,使用sortrow将其降序排序,而不考虑NaN,然后尝试通过我对第5列所做的一切来跟踪所有其他列的索引(我不知道如何对所有步骤执行此操作)。

我将按第5行排序,而不使用
sortrows
。然后只需将第5行转换为双精度:

%sorted indices
[~,ix]=sort(str2double(M(:,5)));
%get mask of nan-rows to be ignored
nanmask=isnan(str2double(M(ix,5)))
%get non-nan indices in reverse order
ix=flipdim(ix(~nanmask),1)
%sort
sortedM=M(ix,:);

第三列的预期结果是什么?完全一样。我不知道为什么MATLAB告诉我这是一种不同的数据类型。或者我们可以将NaN改为0。我不知道如何对单元格进行排序,实际上我只想在保持其他列不变的情况下,根据第5列对单元格进行排序。但现在,我必须将其更改为双精度(将第3列和第4列删除为NaN)。文件交换
sortcell
显示第5列的数据类型不同。我可以按降序排序吗?我做了
flipdim
,但NaN在顶部。您想如何排序?下降,但NAN在底部?是的,那会起作用。我最终会在第5列中寻找排名前10%的数字。因此,NaN的数字将被忽略