How do I combine matrices in a specific order?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Jan
le 4 Avr 2013
Modifié(e) : Jan
le 4 Avr 2013
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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!