2014-12-11 2 views
1

С помощью этого кода я пытаюсь прочитать текстовый файл с 3-мя столбцами и множеством строк. Меня интересует первый столбец. Я пытаюсь преобразовать ячейку в матрицу с cell2mat, но она не работает. Зачем?Ссылка на содержимое ячеек от объекта ячейки без ячейки

Ошибка:

Cell contents reference from a non-cell array object.
Error in cell2mat (line 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) 
+0

'cell2mat' ожидает ввода массива ячеек,' C_1' является двойным. – Daniel

+0

Проблема в том, что C_1 не является ячейкой (введите 'whos C_1', чтобы видеть). Когда вы ссылаетесь на 'C', используя фигурные скобки, вы копируете содержимое первой ячейки, а затем преобразуете ее из строки в двойную. – Trogdor

ответ

1

ошибка происходит потому, что C_1 является двойной, а не клетка, когда вы пытаетесь преобразовать его из массива ячеек в матрице. Использование str2double для массива ячеек, содержащего только удвоения, создаст матрицу по вашему желанию без необходимости 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; 
+0

Но если я уже создал матрицу после этой строкиC_1 = str2double (C (:, 1)); зачем мне это? myCell = C_1; – check

+0

Теперь я хочу построить эти значения из этого столбца. участок (С_1 (:, 1)). Ошибка: использование графика Слишком много входных аргументов. Почему это неправильно? – check

+0

Я только что добавил myCell = C_1, потому что он был в вашем коде выше, но не нужен. –

Смежные вопросы