2017-03-14 61 views
0

私はすべての数字が読み込み可能なExcelから読み込まれたテーブルを持っています。数字の中には、 '0.084'などのアポストロフィの中に入っているものもあります。これは、Excelのシートがテーブルのデータの外にある列に表示されているために乱雑です。 isstringを使用すると0が返されます。 私の主な目的は、テーブルを3D配列に変換することです(3Dテーブルを作成することは可能ですか?)。 「x」として表示されているセルを数値に変換するにはどうすればいいですか(これらのテーブルのいくつかから)3D配列を作成できます。この表の例Var11についてテーブルを配列に変換するMatlab

は、犯罪者の一人として伝わってくる: enter image description here

異なるテーブルは、これらの細胞のための異なる位置を有していてもよいです。アレイにテーブル全体を変換しようと はエラーを与える:

B = table2array(z); 
Error using table2array (line 27) 
Cannot concatenate the table variables 'Var3' and 'Var11', because 
their types are double and cell. 
+0

Matlabワークスペースからインポートされたテーブルのスクリーンショットを表示するか、データの小さなサブセットを貼り付けるとわかりやすくなります。 – Wolfie

答えて

0

ischar('0.084')は1を返し、およびNO isstringは存在しません。 tableから値を取得するには、セル配列の概念A {i、j}を使用します。セルのもののほとんどは動作しませんし、cellfunを使用することはできません。ですから、私は単純なダブルループを提案します:

for i = 1 : N 
    for j = 1 : M 
     val = A{i,j}; 
     if (ischar(val)) 
     val = str2num(val); 
     end 
     M(i,j) = val; 
    end 
end 

もっと洗練された解決法がありそうです。あなたはここでそれを検索することができます:https://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-table.html

変換するには、str2numを使用してください。 Matlabはデフォルトで倍精度で動作し、倍精度になります。

実際には3D配列が可能です。たとえば、ゼロ(10,10,3)は10x10x3のゼロの配列(double型)を作成します。

+0

ありがとうございます。私のテーブルが "z"であれば、問題のセルの1つであるischar(z(1,9))は1ではなく0を返します。したがって、テーブル全体を配列に変換することが困難です。 – Mary

+0

whosは 'z 'の意味を教えてくれますか?細胞?それがセルの場合、複数のデータ要素を同時に操作するには 'cellfun(...) 'を使うべきです。または、z {1,9}を使用してセル内の値を取得します(この場合は文字列)。 –

+0

whos( 'z')はクラステーブル – Mary

関連する問題