how to write data from a loop to excel file
1 次查看(过去 30 天)
显示 更早的评论
Io=0.86;
Iv=0.43;
for theta= 0:6:360
Imax = Io+Iv+2*cos (theta)*sqrt(Io.*Iv);
Imin = Io+Iv-2*cos (theta)*sqrt(Io.*Iv);
fringe_contrast =(Imax-Imin)/(Imax+Imin);
end
how do i store the values of theta, Imax, Imin and fringe_contrast in an excel file to show all the values generated from the loop?
0 个评论
回答(1 个)
bio lim
2015-7-7
编辑:Stephen23
2015-7-8
Io=0.86;
Iv=0.43;
theta = 0:6:360; % Better use vectorization
Imax = Io+Iv+2*cos(theta) * sqrt(Io.*Iv);
Imin = Io+Iv-2*cos(theta) * sqrt(Io.*Iv);
fringe_contrast = (Imax-Imin)./(Imax+Imin); % Element-wise division
filename = 'data.xlsx';
A = {'theta','Imax','Imin','fringe_contrast'; theta.', Imax.', Imin.', fringe_contrast.'};
sheet = 1;
xlRange = 'B1';
xlswrite(filename, A, sheet, xlRange)
I don't have MATLAB installed for the laptop I am using right now, so I cannot check right now. Tell me if there is any problem.
3 个评论
bio lim
2015-7-8
编辑:bio lim
2015-7-8
Hi Alex. Try Sid's nice corrected version.
Io=0.86;
Iv=0.43;
theta = 0:6:360; % Better use vectorization
Imax = Io+Iv+2*cos(theta) * sqrt(Io.*Iv);
Imin = Io+Iv-2*cos(theta) * sqrt(Io.*Iv);
fringe_contrast =(Imax-Imin)./(Imax+Imin);
tableHeaders = {'theta','Imax','Imin','fringe_contrast' };
filename = 'data.xlsx';
sheet = 1;
xlRange = 'A1';
xlswrite(filename, tableHeaders, sheet, xlRange)
mainArrayToWrite = [theta.', Imax.', Imin.', fringe_contrast.'];
filename = 'data.xlsx';
sheet = 1;
xlRange = 'A2';
xlswrite(filename, mainArrayToWrite, sheet, xlRange)
Using loop is often not ideal, because they take longer than vectorization. Checked it and it works. HTH
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Calendar 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!