Согласно mathworks docs
csvwrite (имя файла, М) записывает матрицу М в виде файла значений, разделенных запятой. Ввод имени файла представляет собой вектор символов, указанный как текст, заключенный в одинарные кавычки, например, «csvlist.dat».
Таким образом, ваш вызов csvwrite терпит неудачу, поскольку он может обрабатывать только матрицы, а не ячейки. Кроме того, ваш код имеет несколько вопросов:
- Вы не указали размер векторов в
County_value
, County_lon
и Count_lat
. Что еще более важно, County_value
, похоже, хранит строки, которые могут иметь разную длину, а assingmente County_value(i,1) = Table{1+(-1)*11}
может вызывать ошибки.
- Вы не инициализируете ячейку
D_apt
. В частности, ваш sintax D_apt(:,1+2*(i-1)) = Table{1,4+(i-1)*11};
пытается изменить размер переменной D_apt
на двумерную ячейку, значения которой указаны в элементах Table
.
- Непонятно, как вы хотите записать данные в файл csv.
Чтобы записать файл CSV, используя ячейку, поставки у вас есть два варианта:
- Используйте оператор fprintf с форматом строкой, подходящей для ваших потребностей.
- Тинкер с ячейкой для получения матриц, которые можно корректно обрабатывать csvwrite.
Я бы выбрал первый вариант для решения вашей конкретной проблемы, но имейте в виду, что если вы можете изменить код, создавший ячейку, если может быть чище или проще разбить ячейку на отдельные переменные для числовых и строковых значений.
csvfile = fopen('csvfilename.csv','w');
delimiter = ',';
if isunix
newline = '\n';
else
newline = '\r\n';
end
for i = 1:length(Table)
index11 = mod(i-1/11)+1;
if index11==1 % City
fprintf(csvfile,['%s',delimiter],Table{i});
elseif index11==2 || index==3 % Lon or Lat
fprintf(csvfile,['%f',delimiter],Table{i});
elseif mod(index11,2)==0 % Pair indeces: Names
fprintf(csvfile,['%s',delimiter],Table{i});
else % Impair indeces: Values
if index11<11
fprintf(csvfile,['%s',delimiter],mat2str(Table{i}));
else
fprintf(csvfile,['%s',newline],mat2str(Table{i}));
end
end
end
Я извиняюсь, если я не успел понять, что вы имели в виду с
{1,5}, {1,7}, {1,9}, {1,11} имеет номер с диапазон, который показан на рисунке.
, но изображение не было действительно разборчивым.