Hello, can anyone solve this preallocation problem in my code?
1 次查看(过去 30 天)
显示 更早的评论
Although I tried to preallocate Matrix of zeros still the warning is there and the result changes when I preallocate. Warnings are in line 101,103,105.
0 个评论
采纳的回答
DGM
2021-6-12
You had allocated an empty vector and were growing it by concatenation. It works, but is often slower. Since you know the size of the vectors, just preallocate them at their final size and assign the values by indexing.
% Calculation of rotation matrixes
npos = numel(ERA);
GCRS_X = zeros(npos,1);
GCRS_Y = zeros(npos,1);
GCRS_Z = zeros(npos,1);
for i=1:npos
R= Rotation_3(-ERA(i));
R2= Rotation_2((Xp(i)./3600) *pi/180);% conversion of arcsecond to radians
R1= Rotation_1((Yp(i)./3600) *pi/180);% conversion of arcsecond to radians
W = Rotation_3(-((s(i)./3.6e9)*pi/180))*R2*R1;
Trs= R*W;
% Transformation of ITRS positions to inertial GCRS positions
GCRS_X(i) = Trs(1,1)*x(i)+Trs(1,2)*y(i)+Trs(1,3)*z(i); %GCRS_X in Meter
GCRS_Y(i) = Trs(2,1)*x(i)+Trs(2,2)*y(i)+Trs(2,3)*z(i); %GCRS_Y in Meter
GCRS_Z(i) = Trs(3,1)*x(i)+Trs(3,2)*y(i)+Trs(3,3)*z(i); %GCRS_X in Meter
end
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!