MATLAB: Which is faster, a row vector or a column vector? Can anyone answer me please
matrix
I am trying to do some integration so I am defining the output as a matrix, my question is which definition will give me faster results to define my matrix :
A = zeros(1,n) or A = zeros(n,1)?
Regards
Best Answer
Perhaps the column, as MATLAB uses column-major memory storage of arrays. But really it is unlikely to make a big difference.
Just try it and usetimeit ortic andtoc to compare the times.
Another very fast way to define a matrix of zeros is this:
A(n) = 0;
Or if speed really is that critical, you might like to check out some of the submissions on MATLAB File Exchange:
The result you observe could be because preallocation the second time appears to be faster than the first. So, timing each allocation separately I found a slightly different result (over 1000 runs)
clear all
tic
k=zeros([1,10000]);
toc;
tic;
a=1:10000;
k(a)=rand;
toc
tic
g=zeros([1,10000]);
toc;
tic;
for i=1:10000;
g(i)=rand;
end
toc
Elapsed time is 0.000250 seconds. % pre allocation 1
Elapsed time is 0.000238 seconds.
Elapsed time is 0.000035 seconds. % pre-allocation 2
Elapsed time is 0.000730 seconds.
Here, Vectorization appears to be faster, though, the difference is definitely pronounced when the array length is larger (10000000)
I would suggest going through the following answers and questions on vectorization:
The intermediate integration is numerical in nature so the operation needs to be vectorized. Unfortunately the integral function does not handle vectors for integral limits. Try the following
Best Answer