1. ホーム
  2. matlab

[解決済み] セル以外の配列オブジェクトからセル内容を参照する

2022-02-25 19:42:59

質問

このコードで、3つの列と多くの行を持つテキストファイルを読み出そうとしました。私は最初の列に興味があります。私はcell2matでセルを行列に変換しようとしていますが、それはうまくいきません。なぜでしょうか?

エラーになります。

セル以外の配列オブジェクトからセル内容を参照した。
cell2matのエラー(42行目)
cellclass = class(c{1});

fid=fopen('myfile123.txt');
C=textscan(fid,'%s %s %s');
C_1=str2double(C{1,1}); % first column of the cell
fclose(fid);
myCell=C_1; % 
A=cell2mat(C_1)

解決方法は?

エラーが発生する原因 C_1 をセル配列から行列に変換しようとすると、セルではなくdoubleになります。doubleだけを含むセル配列にstr2doubleを使用すると、doubleを含まない行列が作成されます。 cell2mat その後

さらに、セル配列の1列目のすべての行にアクセスしたい場合は、次のようにコロン演算子を使用する必要があります。

myCell = C_1(:) %// All the rows of the 1st column. Check the docs about referencing in cell arrays for the difference between regular braces and curly braces.

つまり、あなたのコードをまとめると、次のようになります。

fid=fopen('myfile123.txt');
C=textscan(fid,'%s %s %s');

C_1=str2double(C(:,1)); % first column of the cell. using str2double transforms the cell array into a matrix of double, so there is no need for cell2mat afterwards.

fclose(fid);
myCell=C_1;