Одним из решений, которое позволит вам выводить «пустые» ячейки на рабочий лист Excel, является преобразование данных в массив ячеек с пустыми значениями или пробелами вместо нулей, используя один из следующих параметров:
newData = cell(size(fileData1)); %# Each cell is initialized to []
[newData{:}] = deal(''); %# Change the cell contents to an empty string
[newData{:}] = deal(' '); %# Change the cell contents to a blank
Тогда есть два способа продолжить. Если отметки времени в меньшем файле являются только подмножеством отметок времени в большем файле (т. Е. В меньшем файле никогда не бывает отметки времени, которая не равна в большем), то вы можете просто используйте функцию ISMEMBER следующим образом:
t = fileData1(:,1); %# Time-stamps from file 1
index = ismember(t,fileData2(:,1)); %# Find index of common time-stamps
newData(:,1) = num2cell(t); %# Copy time-stamps
newData(index,:) = num2cell(fileData2); %# Copy file 2 data
Однако, если - это метки времени в меньшем файле, которые не находятся в большем, вы должны вместо этого сделать следующее, используя функцию INTERSECT :
t = fileData1(:,1); %# Time-stamps from file 1
[junk,index1,index2] = intersect(t,fileData2(:,1)); %# Find indices
newData(:,1) = num2cell(t); %# Copy time-stamps
newData(index1,:) = num2cell(fileData2(index2,:)); %# Copy file 2 data
Выше будут отброшены все метки времени, которые находятся в меньшем файле, но не в большем. Если вы хотите включить эти дополнительные данные, включите следующий дополнительный код (который использует функции SETDIFF и SORT ):
[junk,index] = setdiff(fileData2(:,1),t); %# Unique time-stamp indices
newData = [newData; num2cell(fileData2(index,:))]; %# Add unique data
[junk,index] = sort([newData{:,1}]); %# Sort the time-stamps
newData = newData(index,:); %# Reorder the data
Теперь, если вы используете XLSWRITE для вывода newData
в файл Excel, ячейки заполнения должны отображаться как пустые, хотя в документации по XLSWRITE есть следующие замечания:
Полная функциональность xlswrite
зависит
по использованию Microsoft Excel COM
сервер. Типичная установка
Excel для Windows включает доступ к
этот сервер. Если ваша система не
установить Excel для Windows или
если COM-сервер недоступен,
xlswrite
Записывает матрицу M
в виде текстового файла в
Формат значения с разделителями-запятыми (CSV).
Игнорирует аргументы листа и диапазона.
Генерирует ошибку, если входная матрица
M
- это массив ячеек.
Если в вашей системе установлен Microsoft Office
2003 программное обеспечение установлено, но вы хотите
создать файл в Excel 2007
формат, вы должны установить офис
Пакет совместимости 2007 года.