How do I combine matrices in a specific order?

2 次查看(过去 30 天)
for j=1:5
k=num2str(j); extension='.asc';
filename=strcat('Image',k,extension)
[Profiles]=readProfiles(filename); % Read profiles
ProfilesALL(:,j)=Profiles;
end
ProfISO_2_5=(ProfilesALL(:,1)+ProfilesALL(:,2))/2;
ProfISO_7_5=(ProfilesALL(:,2)+ProfilesALL(:,3))/2;
ProfISO_15=(ProfilesALL(:,3)+ProfilesALL(:,4))/2;
ProfISO_25=(ProfilesALL(:,4)+ProfilesALL(:,5))/2;
How do I occupy a new matrix, A, to be in this order:
A(:,1)=ProfilesALL(:,1);
A(:,2)=ProfISO_2_5;
A(:,3)=ProfilesALL:,2);
A(:,4)=ProfISO_7_5;
A(:,5)=ProfilesALL(:,3);
A(:,6)=ProfISO_15;
A(:,7)=ProfilesALL(:,4);
A(:,8)=ProfISO_25;
A(:,9)=ProfilesALL(:,5);
  3 个评论
Jan
Jan 2013-4-4
A vote for Matt's answer, although it is hidden in the comment section.

请先登录,再进行评论。

采纳的回答

Jan
Jan 2013-4-4
编辑:Jan 2013-4-4
This procedure is actually a linear interpolation:
A = interp1(1:5, transpose(ProfilesALL), 1:0.5:5);
I cannot test this currently, such that I'm not sure about the transpose().
This is a leaner method to create the file name:
filename = sprintf('Image%d.asc', k);
Letting an array gorw iteratively wastes time, but I do not think that this can be measured for the small number of 5 loops. Nevertheless, I suggest to pre-allocate in general. Either allocate ProfilesALL at once by zeros(), when you know the size at the beginning. Or perform an implicit allocation by inserting the last element at first:
for j = 5:-1:1
...

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Multidimensional Arrays 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by