我在matlab中创建了单元格文件。
我想从这个表创建csv文件。 起初我尝试了“csvwrite”功能,但它在那种情况下不起作用。
此外,我还根据列创建文件。
for i=1:25
County_value(i,1) = Table{1,1+(i-1)*11};
County_lon(i,1) = Table{1,2+(i-1)*11};
County_lat(i,1) = Table{1,3+(i-1)*11};
D_apt(:,1+2*(i-1)) = Table{1,4+(i-1)*11};
D_apt{:,2*i} = num2cell(Table{1,5+(i-1)*11})
end
我继承了County Value,lon,lat和D_apt(:,1 + 2 *(i-1))。但是,当我尝试创建D_apt {:,2 * i} ...
时出错我需要你的帮助!!
谢谢,谢谢你的帮助!!
答案 0 :(得分:0)
csvwrite(filename,M)将矩阵M作为逗号分隔值写入filename。文件名输入是一个字符向量,指定为用单引号括起来的文本,例如'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
变量的大小调整为2维单元格,其值在Table
元素中给出。为了使用您提供的单元格编写csv文件,您有两种选择:
我会选择第一个解决您特定问题的方法,但请记住,如果您能够更改创建单元格的代码,那么将单元格拆分为数字的单独变量可能更简洁或更简单和字符串值。
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}有这个号码使用图片中显示的范围。但图像不太清晰。