Matlab 将矩阵转换为单元格,并将NaN替换为“-”
我有一个矩阵a 如何将矩阵A转换为单元格,并将nan替换为“-”,因此新的B单元格数组将如下所示:Matlab 将矩阵转换为单元格,并将NaN替换为“-”,matlab,matrix,nan,cell-array,Matlab,Matrix,Nan,Cell Array,我有一个矩阵a 如何将矩阵A转换为单元格,并将nan替换为“-”,因此新的B单元格数组将如下所示: B = {'-' '-' 1 0 '-'} 我试过了 A = mat2cell(A); 或 然后 这不起作用。我想你可以试试num2cell 给 >> B B = { [1,1] = _ [1,2] = _ [1,3] = 1 [1,4] = 0 [1,5] = _ } 我想你可以试试num2cell 给 >> B B = { [1,1] =
B = {'-' '-' 1 0 '-'}
我试过了
A = mat2cell(A);
或
然后
这不起作用。我想你可以试试num2cell
给
>> B
B =
{
[1,1] = _
[1,2] = _
[1,3] = 1
[1,4] = 0
[1,5] = _
}
我想你可以试试num2cell
给
>> B
B =
{
[1,1] = _
[1,2] = _
[1,3] = 1
[1,4] = 0
[1,5] = _
}
您可以将两次尝试配对,注意您确实需要cellfun的“UniformOutput”,因为您需要一个逻辑阵列
A = num2cell(A);
A(cellfun(@isnan,A)) = {'-'};
或者你可以使用一个循环
B = cell( size( A ) );
idx = isnan( A );
for ii = 1:numel(A)
if idx(ii)
B{ii} = '-';
else
B{ii} = A(ii);
end
end
这可能看起来很迟钝,但如果您正在努力正确实现mat2cell/cellfun/etc,那么您可以保证使用这些函数编写的代码将更难为您自己和他人维护!至少循环是显式的,而且这些天不一定慢,尽管如果您在混合类型的单元格数组中存储数字数据,那么我必须假设性能并不重要。您可以将两次尝试配对,请注意,您确实需要cellfun的“UniformOutput”,因为您需要一个逻辑数组
A = num2cell(A);
A(cellfun(@isnan,A)) = {'-'};
或者你可以使用一个循环
B = cell( size( A ) );
idx = isnan( A );
for ii = 1:numel(A)
if idx(ii)
B{ii} = '-';
else
B{ii} = A(ii);
end
end
这可能看起来很迟钝,但如果您正在努力正确实现mat2cell/cellfun/etc,那么您可以保证使用这些函数编写的代码将更难为您自己和他人维护!至少循环是显式的,而且这些天不一定慢,尽管如果你在混合类型的单元格数组中存储数字数据,那么我不得不假设性能并不重要。你的想法使用是好的,也许用法不清楚!?您还可以使用,这似乎更易于使用。此外,还可与cell阵列配合使用,这可能比cellfun和类似产品更高效:
A=[nan nan 1 0 nan]
B=珠心;
比斯纳纳={'-'}
输出:
A=
楠楠10楠
B=
{
[1,1] = -
[1,2] = -
[1,3] = 1
[1,4] = 0
[1,5] = -
}
希望有帮助 您的想法使用很好,可能只是用法不清楚!?您还可以使用,这似乎更易于使用。此外,还可与cell阵列配合使用,这可能比cellfun和类似产品更高效:
A=[nan nan 1 0 nan]
B=珠心;
比斯纳纳={'-'}
输出:
A=
楠楠10楠
B=
{
[1,1] = -
[1,2] = -
[1,3] = 1
[1,4] = 0
[1,5] = -
}
希望有帮助
B = cell( size( A ) );
idx = isnan( A );
for ii = 1:numel(A)
if idx(ii)
B{ii} = '-';
else
B{ii} = A(ii);
end
end