2015-07-30 3 views
0

У меня есть массив ячеек, который имеет как строки, так и числа. Я хочу загрузить все элементы массива ячеек. Для того же, я использовал следующий метод:Как загрузить массив ячеек с двумя строками и цифрами?

load(filename); 

Эта команда загружается только строки и столбцы, за исключением, что имеет номера. В основном, поскольку мой файл не является расширением .mat, он обрабатывает его как файл ASCII и загружает только текст.

Я пробовал importdata(filename). Но это дает мне структуру 1*1. Мне нужны элементы для импорта в другой массив ячеек того же размера.

Есть ли способ загрузить все значения?

+0

'load' для загрузки' .mat' файлы, как вы обратите внимание на ваш вопрос. См. Справку для «textscan» и посмотрите, будет ли это работать лучше. –

+0

Принятый ответ этого сообщения имеет отличную функцию http://stackoverflow.com/questions/4747834/import-csv-file-with-mixed-data-types – user1543042

ответ

0

load используется для импорта .mat -файлов с переменными рабочего пространства. Поскольку ваши данные не являются фактическим .mat-файлом, вам нужно использовать другой метод.

Давайте предположим, что у вас есть файл filename с разделителями-запятыми данные:

str1 1 
str2 2 
str3 3 
str4 4 

Чтобы получить ячеистый массив, где первый столбец является строкой (используя %s) и вторую двойную (используя %f), вы можете использовать textscan. Проверьте результат, возможно, это уже то, что вы ищете.

filename = 'data'; 
F = fopen(filename, 'r'); 
data = textscan(F, '%s %f', 'Delimiter', '\t'); 

Если нет, то вы можете создать ячеистую массив CA, где первый столбец является строка (используя cellstr), а второй один двойная (с использованием num2cell).

CA = cell(size(data{1},1),2); 
CA(:,1) = cellstr(data{1}); 
CA(:,2) = num2cell(data{2}); 

Результат:

CA = 
    'str1' [1] 
    'str2' [2] 
    'str3' [3] 
    'str4' [4] 
Смежные вопросы