Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
NCTM or The Math Forum.



Re: xls file in matlab
Posted:
Jul 8, 2013 10:46 AM


"george veropoulos" <veropgr@yahoo.gr> wrote in message news:krdsv9$m8a$1@newscl01ah.mathworks.com... > Dear friend > i run the following code in matlab > > > spin=1/2; > r_parallel=10; > theta=0; > n=1; > l=0; > yi=1; > B=ones(size(10000));
As TideMan pointed out, this creates a 1by1 B containing the value 1. But there's another problem:
> Enl=ones(size(10000)); > wave_function=ones(size(10000)); > for i=0:5
I recommend NOT using either i or j for your loop variable.
http://www.mathworks.com/help/matlab/ref/i.html http://www.mathworks.com/help/matlab/ref/j.html
> B=i;
This overwrites the entire contents of B with the scalar (1by1) value of the loop variable. Thus even if you made B be 10000by1:
B = ones(10000, 1);
This line will make it 1by1. To make B be a 10000by1matrix each of whose elements is the loop variable, use one of these two lines in the loop:
B = i*ones(10000, 1); B = repmat(i, 10000, 1);
> [wave_function,Enl]=psi_parallel(r_parallel,theta,n,l,spin,yi,B); > > xlswrite('results.xlsx', B,'sheet1','A') > xlswrite('results.xlsx',Enl,'sheet1','B') > end > > > the problem is that in xls(RESULTS) file i have ONLY one value for > B=5 NOT ALL THE VALUES .(i=0,1,3,5 )
Each call to XLSWRITE overwrites the same elements in the sheet sheet1 of results.xlsx. Rather than write scalar values to the sheet once per loop, accumulate the results in an array and write the array to the Excel file after the loop is complete.
% Yes, I know there's a better way to do this. % This is for demonstration purposes only z = zeros(10, 1); for k = 1:10 z(k) = k.^2; end
xlswrite('results_example.xlsx', z, 'sheet1', 'A')
Plus your description skipped over 2 and 4. Those loop iterations do run and XLSWRITE will be called during those iterations.
 Steve Lord slord@mathworks.com To contact Technical Support use the Contact Us link on http://www.mathworks.com



