さまざまなタイプの変数 (double と文字列) を持つセルがあり、セル内の数値要素を丸めたいと考えています。
round
関数は配列でのみ機能し、セルでは機能しないため、使用しようとしてcell2mat
いますが、セル内の要素の種類が異なる場合、この関数は使用できません。
このセルの数値要素を丸める方法はありますか? もちろん、セル要素をループしたくありません。
さまざまなタイプの変数 (double と文字列) を持つセルがあり、セル内の数値要素を丸めたいと考えています。
round
関数は配列でのみ機能し、セルでは機能しないため、使用しようとしてcell2mat
いますが、セル内の要素の種類が異なる場合、この関数は使用できません。
このセルの数値要素を丸める方法はありますか? もちろん、セル要素をループしたくありません。
str2double
非数値型を NaN に変換する機能を利用したいと考えています。
次のようなセルがあるとします。
A = {'1.999','3.1415','pie','??'}
B = round(str2double(A))
B =
2 3 NaN NaN
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 の場所とstring
s の場所に関してランダムである場合、 loop/ / bruteforcedouble
以外にできることはあまりありません。ただし、周期性がある場合 (たとえば、「文字列の後に常に 2 つのエントリが続く」など)、(明示的または暗黙的に) 反復する必要なく値を取得するインデックス ベクトルを作成できる場合があります。cellfun
double