0

我有一个包含不同类型变量(双精度和字符串)的单元格,我想对单元格中的数字元素进行四舍五入。 round函数只能与数组一起使用,不能与单元格一起使用,所以我正在尝试使用cell2mat- 但如果单元格中的元素类型不同,则不能使用此函数。

知道如何舍入此单元格中的数字元素吗?当然,我不想对单元格元素进行循环。

4

2 回答 2

1

正如Adriaan所提到的,这可以通过以下方式完成cellfun

function testCell = q38476362

  testCell = {'t','h',1.004,'s',[],'i',4.99,[],'a',[],'ce',10.8};
  isnum = cellfun(@(x)~isempty(x) & isnumeric(x),testCell);
  testCell(isnum) = num2cell(round([testCell{isnum}],0));

testCell = 

    't'    'h'    [1]    's'    []    'i'    [5]    []    'a'    []    'ce'    [11]

string如果您的元胞数组在s 的位置和 s 的位置方面是随机的,那么除了 loop/ / bruteforcedouble之外,您无能为力。但是,如果有一些周期性(例如“一个字符串后面总是跟着两个条目”),您可能能够构建一些索引向量,无需迭代(显式或隐式)即可获得值。cellfundouble

于 2016-07-20T09:25:32.130 回答
1

您想利用str2double将非数字类型转换为 NaN 的能力。

假设你有一个像这样的单元格:

 A = {'1.999','3.1415','pie','??'}
 B = round(str2double(A))

 B =

 2     3   NaN   NaN
于 2016-07-20T09:22:06.750 回答