2017-12-05 59 views
2

私はshown in the variable viewer hereとしてセル配列内のデータを持っている:MATLABでセル配列の値を2つの列に分割する方法は?

{[2.13949546690144;56.9515770543056], 
[1.98550875192835;50.4110852121618], 
...} 

私のように2進小数点数を持つ2つの列に分割します:開閉中括弧とセミコロンを削除することで

2.13 56.95 
1.98 50.41 

[;] (Excelの「テキストと列」のようにする)などです。

答えて

1

あなたのN要素のセル配列Cは、各セルの2行1の数値データを持っている場合、あなたは簡単に変換することができますN×2数値行列にそのMようなので(2つの有効数字に各要素を丸めるround関数を使用):

M = round([C{:}].', 2); 
C{:}

構文はC{1}, C{2}, ... C{N}に相当Cの内容のcomma-separated listを作成。これらはすべてhorizontally concatenatedで、[ ... ]を使用した場合、結果はtransposedで、.'です。

-2

あなたは丸めについてはcell2mat

A={2.14,1.99;56.95,50.41}; 
B=cell2mat(A); 

を使用する必要があり、あなたが行うことができます:

B=round(100*B)/100; 
+0

OPデータは、COLUMNベクトルのセルアロウです。あなたのコードは、すべての値が混在した新しい列ベクトルを生成します。また、関数内の桁数を指定できるときに、丸めにこのアプローチを使用する理由は何ですか? –

0
% let's build a matching example... 
c = cell(2,1); 
c{1} = [2.13949546690144; 56.9515770543056]; 
c{2} = [1.98550875192835; 50.4110852121618]; 

% convert your cell array to a double array... 
m = cell2mat(c); 

% take the odd rows and place them to the left 
% take the even rows and place them to the right 
m = [m(1:2:end,:) m(2:2:end,:)]; 

% round the whole matrix to two decimal digits 
m = round(m,2); 

お使いの環境設定によっては、あなたはまだ後に後続ゼロの多くを見ることが最初の2桁の10進数...しかし、心配する必要はありません、すべてが大丈夫です(正確な視点で)。あなたは数字の唯一の「本物」の数字を表示したい場合は、このコマンドを使用します。

format short g; 
関連する問題