csvwrite with a double
3 次查看(过去 30 天)
显示 更早的评论
Hello I am having a great deal of difficulty writing a 512 x 1 cell array of type double in a .MAT file to excel I tried this:
exportlist = get(handles.listbox2,'string')
%we need to change the directory to the chosen output and after we have %re-loaded the .mat file into the workspace convert the files %The evalin evaluates the expression in 'base' or workspace
for a = 1:length(exportlist) outloc =get(handles.CSV_file, 'string'); cdstring = ['cd(''' outloc ''')']; eval(cdstring); csvwrite([exportlist{a},'.csv'],evalin('base',cell2mat(exportlist{a})))
end
No dice. The error I get is this:
??? Cell contents reference from a non-cell array object.
Error in ==> cell2mat at 44 cellclass = class(c{1});
Error in ==> MAT_to_Csv>convert_button_Callback at 319 csvwrite([exportlist{a},'.csv'],evalin('base',cell2mat(exportlist{a})))
Thanks
Bill
0 个评论
采纳的回答
Fangjun Jiang
2011-6-17
No. Your line probably should be:
csvwrite([exportlist{a},'.csv'],evalin('base',exportlist{a}))
Read my answer to your other question. I think you should really consider the dynamic field names like Vars.(exportlist{a}) to avoid using eval().
Your eval(cdstring) could be replaced by cd(outloc)
1 个评论
Walter Roberson
2011-6-18
Yes, yes, dynamic field names! And pass the structure in as a parameter or work with in via handles, so that you do not need to use evalin()
更多回答(1 个)
Walter Roberson
2011-6-18
I would also add the precautionary measure of using
exportlist = cellstr(get(handles.listbox2,'string'));
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Text Files 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!