Strings and numbers, strcat and num2str
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Syed Ali Mohsin Bukhari
le 6 Fév 2017
Commenté : Syed Ali Mohsin Bukhari
le 6 Fév 2017
I'm working with SDSS data and want to get rid of some fits files from the ones I have downloaded. I have stored the pl #, mjd, fb # in respective variables and the format of SDSS file naming is spec-plate-mjd-fiber.fits where
- plate ranges from 250-3500
- mjd is always 5 digits
- fiber is 1-640.
I want to concatenate the plate, mjd and fiber number to check for the files and exclude/move them. Here's my code
Tz = '-000'; tz = '-00'; oz = '-0'; j=1;
for j=1:length(pl)
if and(pl(j) < 999, fb(j) < 10)
b = ['spec-0', num2str(pl(j)), '-', num2str(mj(j)), Tz, num2str(fb(j))];
end
if and(pl(j) < 999, or(fb(j) >= 10, fb(j) < 100))
b = ['spec-0', num2str(pl(j)), '-', num2str(mj(j)), tz, num2str(fb(j))];
end
if and(pl(j) < 999, or(fb(j) >= 100, fb(j) < max(fb)))
b = ['spec-0', num2str(pl(j)), '-', num2str(mj(j)), oz, num2str(fb(j))];
end
if and(pl(j) >= 1000, fb(j) < 10)
b = ['spec-', num2str(pl(j)), '-', num2str(mj(j)), Tz, num2str(fb(j))];
end
if and(pl(j) >= 1000, or(fb(j) >= 10, fb(j) < 100))
b = ['spec-', num2str(pl(j)), '-', num2str(mj(j)), tz, num2str(fb(j))];
end
if and(pl(j) >= 1000, or(fb(j) >= 100, fb(j) < max(fb)))
b = ['spec-', num2str(pl(j)), '-', num2str(mj(j)), oz, num2str(fb(j))];
end
c{j} = b;
end
The problem is with fb < 100, it gives spec-1835-54563-077 instead of spec-1835-54563-0077 and same with fb < 10. How can I solve this?
2 commentaires
Réponse acceptée
James Tursa
le 6 Fév 2017
Modifié(e) : James Tursa
le 6 Fév 2017
Is this what you want?
b = sprintf('spec-%04d-%05d-%04d',pl(j),mj(j),fb(j));
1 commentaire
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Characters and Strings dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!