2017-01-07 8 views
2

私はMatlabのに次の.xlsxファイルをインポートしていますMatlabに 'NaN'がNaNとして扱われるべきことを知らせるには?

enter image description here

私のコードは:

U_sum24t = zeros(height(Z_24TimeSteps),1); 
col_names24tU = Z_24TimeSteps.Properties.VariableNames; 
for k = 1:height(Z_24TimeSteps) 
    col_to_sum24tU = any(cell2mat(... 
     cellfun(@(x) strcmp(col_names24tU,x),Z_24TimeSteps.U{k},... 
     'UniformOutput', false).'),1); 
    U_sum24t(k) = sum(Z_24TimeSteps{k,col_to_sum24tU}); 
end 

次のエラーメッセージが発生します。

私はMatlabの御馳走を作りたい
Undefined function 'sum' for input arguments of type 'cell'. 

すべてNaNとしてのNaNですので、計算を実行できます。 私がすでに試したこと:ExcelでNaNを空白に置き換え、Matlabでデータを取り込み> "NaNで空白を置き換える">文字列フォーマットを表示しない

答えて

3

データをセル配列に抽出しています。私が行うことは、Excelのスプレッドシートに「NaN」の値を保持し、文字列「NaN」を数値NaNに変更するMatlabコードを使用することです。次にcell2matを使用してセル配列を数値配列に変換し、sumのような数値演算を行うことができます。

明確に、あなたの特定のエラーを打破してみましょうことを確認するには、次の

Undefined function 'sum' for input arguments of type 'cell'. 

エラーメッセージがsumに関連するので、問題はラインに

U_sum24t(k) = sum(Z_24TimeSteps{k,col_to_sum24tU}); 

でエラーがZ_24TimeSteps{k,col_to_sum24tU}がAである私に語りましたセル配列であるため、一時変数にしましょう:

mycellarray = Z_24TimeSteps{k,col_to_sum24tU}; 

今、私たちは、私たちがNaNと「NaNに」を交換するには、次の操作を行うことができますセル配列があります。

mycellarray{strcmp(mycellarray, 'NaN')} = NaN; 

をしかし、我々はまだ我々がsumを行うことができます前に、数値配列にこれを変換する必要があります。

U_sum24t(k) = sum(cell2mat(mycellarray)); 
+0

ビンゴ!あなたの説明のために多くのおかげで、@トム! – John

+0

問題ありません!うれしかったよ! – Tom

関連する問題