Записывать строки в Excel с помощью Matlab? - PullRequest
3 голосов
/ 23 июня 2010

Я записываю массив строк в Excel из Matlab.У меня есть данные массива {}, которые я пытаюсь записать в Matlab.Он должен записывать три большие длины строк, чтобы преуспеть, так как strcmp проходит 3 раза.В настоящее время это только запись последнего набора строк в Excel.data = {{1x25} {1x35} {1x20}} выглядит следующим образом.Также я хотел бы иметь возможность записывать данные в три ячейки, а не копировать их в столько ячеек, сколько строк в элементе массива ячеек.Можно ли это сделать с Matlab, чтобы преуспеть?

done = {}

for i = 1:3
   q = strcmp(x_gene_ID{i},locus_tags{i});
   if q ==1
       done{end+1} = data{i};
       disp(done);

   end


end


w = xlswrite('data.xlsx',done','E2:E400');

Хорошо, что помогает мне знать, что массивы ячеек имеют диапазон больше 3 ячеек.Я пытаюсь заставить массив ячеек Nx1 вписаться в одну ячейку в Excel, потому что он должен соответствовать информации в соседней ячейке.Это вообще возможно сделать?

A     B      C        D                   E  
w   Rv0146  na  Rv0039c (i want the cell array1 to go here)
s   Rv0156  na  Rv0029c (i want the cell array2 to go here)
s   Rv0156  na  Rv0029c (i want the cell array2 to go here)

Вот что я хочу сделать в Excel

1 Ответ

5 голосов
/ 23 июня 2010

ОБНОВЛЕННЫЙ ОТВЕТ:

Если я правильно понимаю, похоже, что ваша переменная data является массивом ячеек, где каждая ячейка содержит массив строк размером 1 на N (или, возможно, N на 1). Если вы хотите попробовать вписать каждый из этих массивов ячеек строк в одну ячейку электронной таблицы, вам нужно сначала отформатировать каждую в одну длинную строку.

Вот пример того, как можно форматировать массивы ячеек строк, объединяя их вместе с новой строкой между ними:

data = {{'hello' 'hi' 'hey'} ...              %# Sample cell array of 1-by-N
        {'world' 'earth' 'everyone'} ...      %#   cell arrays of strings
        {'blah' 'blah'}};
data = cellfun(@(x) {strcat(x,{char(10)})},data);  %# Add newline characters
                                                   %#   to the string ends
data = cellfun(@(x) {deblank([x{:}])},data);  %# Concatenate the inner cells and
                                              %#   remove the trailing newlines 

Теперь, когда каждый массив ячеек строк представляет собой одну длинную строку, каждая строка может быть записана в ячейку электронной таблицы Excel следующим образом:

xlswrite('data.xls',data(:),'Sheet1','E2');  %# Write the data to cells E2 to E4

А вот как выглядит итоговая таблица:

alt text

Если вы используете пробел ' ' вместо символа новой строки, вот как выглядит электронная таблица (после настройки ширины строки и столбца):

alt text

Функции, используемые в приведенном выше коде: CELLFUN , STRCAT , CHAR , DEBLANK , XLSWRITE .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...