按照mathworks docs
csvwrite(文件名,M)寫入矩陣M到文件名作爲逗號分隔值。文件名輸入是用單引號括起來的字符向量,例如'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
元素中給出的2維單元格。
- 目前還不清楚您希望如何將數據寫入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}已與數圖片中顯示的範圍。
但圖像不是很清晰。