異なるタイプの変数(double &文字列)を持つセルがあるので、セルの数値要素を丸めたいと思います。 round
関数は配列でのみ動作し、セルでは動作しないので、cell2mat
を使用しようとしていますが、この関数はセル内の異なる要素の型の場合には使用できません。異なるデータ型を持つセル配列の数値要素を丸める
このセルの数値要素をどのように丸めることができますか?もちろん、私はセル要素をループしたくありません。
異なるタイプの変数(double &文字列)を持つセルがあるので、セルの数値要素を丸めたいと思います。 round
関数は配列でのみ動作し、セルでは動作しないので、cell2mat
を使用しようとしていますが、この関数はセル内の異なる要素の型の場合には使用できません。異なるデータ型を持つセル配列の数値要素を丸める
このセルの数値要素をどのように丸めることができますか?もちろん、私はセル要素をループしたくありません。
、これは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とdouble
がどこにあるのか、loop/cellfun
/bruteforceのほかにあなたができることはあまりありません。しかし、ある程度の周期性がある場合(例えば、「文字列の後に常に2つのdouble
エントリが続く」)、明示的または暗黙的に反復することなく値を得るための索引付けベクトルを構築できます。
これはエースです12:D – GameOfThrows
Dev-iL、あなたの答えは素晴らしいですが、セルにも空要素([])が含まれている場合は私のためには役に立たない – erez
@erez –
str2double
数値以外の型をNaNに変換する機能を利用したいと考えています。 アドリアンで述べたように
A = {'1.999','3.1415','pie','??'}
B = round(str2double(A))
B =
2 3 NaN NaN
あなたはafaikをループせずに行うことはできません。あなたは 'cellfun'を使うことができますが、それはちょうど変装のループです。ルーピングを避けたい場合、セルはうまく動作しないことはよく知られています。 – Adriaan