how to create csv file with dlmwrite for diffrent vector sizing?
3 views (last 30 days)
Show older comments
hello, I have sevral of colums vector with different sizes, and I want to write them all to a csv file,in the following way:
for example, vec1=[11,12,13,14], vec2=[21,22,23]; vec3=[31,32,33,34,35,36] the output should be something like this:
line1: 11, 21,31
line2: 12, 22,31
line3: 13, 23,32
line4: 14, ,34
line5: , ,35
line6: , ,36
but instead the output is like this:
11,21,31
12,22,32
13,23,33
14,34
35
36
the code:
vec1=[11,12,13,14]; vec2=[21,22,23]; vec3=[31,32,33,34,35,36];
vec=[];
for i=1:max([length(vec1),length(vec2),length(vec3)])
if (i<=length(vec1))
vec=[vec,vec1(i)];
else vec=[vec,[]];
end
if (i<=length(vec2))
vec=[vec,vec2(i)];
else vec=[vec,[]];
end
if (i<=length(vec3))
vec=[vec,vec3(i)];
else vec=[vec,[]];
end
dlmwrite('test.csv', vec,'-append');
vec=[];
end
I tried replacing "vec=[vec,[]]" in the else with "vec=[vec,NaN]", and it worked, but I dont want to see "NaN" at all in the csv file. is there any other way to keep it blank? for record, I do not know in advance the length of each vector.
1 Comment
Stephen23
on 31 Oct 2018
Edited: Stephen23
on 31 Oct 2018
"is there any other way to keep it blank?"
Not they way you are trying. Numeric array must contain numeric values, and [] is not a numeric value (it is an empty array). You could write your own export function using low-level operations (i.e. fprintf).
Or just use NaN.
Accepted Answer
Walter Roberson
on 31 Oct 2018
This is not possible using csvwrite or dlmwrite. You will need to fopen / fprintf / fclose.
More Answers (1)
madhan ravi
on 31 Oct 2018
Edited: madhan ravi
on 31 Oct 2018
instead of [] you can use 0 , you can omit it later on
else vec=[vec,0];
2 Comments
madhan ravi
on 31 Oct 2018
Edited: madhan ravi
on 31 Oct 2018
dlmwrite('test.csv', vec,'delimiter',',','TreatAsEmpty',1,'-append');
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!