我有一个包含不同类型变量(双精度和字符串)的单元格,我想对单元格中的数字元素进行四舍五入。
round
函数只能与数组一起使用,不能与单元格一起使用,所以我正在尝试使用cell2mat
- 但如果单元格中的元素类型不同,则不能使用此函数。
知道如何舍入此单元格中的数字元素吗?当然,我不想对单元格元素进行循环。
我有一个包含不同类型变量(双精度和字符串)的单元格,我想对单元格中的数字元素进行四舍五入。
round
函数只能与数组一起使用,不能与单元格一起使用,所以我正在尝试使用cell2mat
- 但如果单元格中的元素类型不同,则不能使用此函数。
知道如何舍入此单元格中的数字元素吗?当然,我不想对单元格元素进行循环。
正如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
之外,您无能为力。但是,如果有一些周期性(例如“一个字符串后面总是跟着两个条目”),您可能能够构建一些索引向量,无需迭代(显式或隐式)即可获得值。cellfun
double
您想利用str2double
将非数字类型转换为 NaN 的能力。
假设你有一个像这样的单元格:
A = {'1.999','3.1415','pie','??'}
B = round(str2double(A))
B =
2 3 NaN NaN