Если я правильно понял первую часть вашего вопроса, вы хотите удалить все строки в массиве ячеек newfile
, которые содержат только пустые ячейки. Это можно сделать с помощью функции CELLFUN для поиска пустых ячеек, с помощью функции ALL для поиска строк, содержащих все пустые ячейки, а затем с помощью логического индексирования чтобы удалить эти строки:
>> newfile = cell(5,5); %# Empty cell array
>> newfile(:) = {''}; %# A different way to assign values without DEAL
>> newfile([1 2 4 5]) = {'a'} %# Make some non-empty cells
newfile =
'a' '' '' '' ''
'a' '' '' '' ''
'' '' '' '' ''
'a' '' '' '' ''
'a' '' '' '' ''
>> emptyIndex = cellfun('isempty',newfile) %# Logical index of empty cells
emptyIndex =
0 1 1 1 1
0 1 1 1 1
1 1 1 1 1
0 1 1 1 1
0 1 1 1 1
>> newfile = newfile(~all(emptyIndex,2),:) %# Removes 3rd row
newfile =
'a' '' '' '' ''
'a' '' '' '' ''
'a' '' '' '' ''
'a' '' '' '' ''
РЕДАКТИРОВАТЬ: Если вы инициализируете массив ячеек newfile
с пустыми пробелами (' '
) вместо пустых строк (''
), вам придется изменить способ вычисления emptyIndex
в приведенный выше код. Аргумент CELLFUN 'isempty'
должен быть изменен на @(x) strcmp(x,' ')
, чтобы получить те же результаты.
Что касается вашего второго вопроса, вы можете указать в своем вызове XLSWRITE диапазон листа и строки / столбца в файле, в который вы хотите добавить свои данные. Если вы добавляете в файл один раз в день, самым простым решением может быть добавление нового листа с датой в качестве имени. Следующее записывает данные в M
в файл fileName
, добавляя новый лист с именем с текущей датой и временем:
xlswrite(fileName,M,datestr(now));