0

さまざまなタイプの変数 (double と文字列) を持つセルがあり、セル内の数値要素を丸めたいと考えています。 round関数は配列でのみ機能し、セルでは機能しないため、使用しようとしてcell2matいますが、セル内の要素の種類が異なる場合、この関数は使用できません。

このセルの数値要素を丸める方法はありますか? もちろん、セル要素をループしたくありません。

4

2 に答える 2

1

str2double非数値型を NaN に変換する機能を利用したいと考えています。

次のようなセルがあるとします。

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

 B =

 2     3   NaN   NaN
于 2016-07-20T09:22:06.750 に答える
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]

cell 配列がs の場所とstrings の場所に関してランダムである場合、 loop/ / bruteforcedouble以外にできることはあまりありません。ただし、周期性がある場合 (たとえば、「文字列の後に常に 2 つのエントリが続く」など)、(明示的または暗黙的に) 反復する必要なく値を取得するインデックス ベクトルを作成できる場合があります。cellfundouble

于 2016-07-20T09:25:32.130 に答える