2016-08-13 1 views
0

J'ai un tableau avec les URL quasars qui y sont stockéesTri d'un tableau d'URL

http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0269/spec-0269-51581-0467.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0329/spec-0329-52056-0059.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/104/spectra/2957/spec-2957-54807-0164.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0342/spec-0342-51691-0089.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/2881/spec-2881-54502-0508.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0302/spec-0302-51616-0435.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/2947/spec-2947-54533-0371.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0301/spec-0301-51942-0460.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/104/spectra/2962/spec-2962-54774-0461.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/2974/spec-2974-54592-0185.fits 

Je veux trier le tableau d'URL sur la base du prochain numéro de spec- et de ne pas utiliser l'ordre alphabétique. J'ai trié le tableau avec sort mais cela n'a pas aidé car il a toujours pris la ligne 3rd et 2nd last vers le haut parce qu'ils ont un 1.

Je voudrais avoir une sortie comme celui-ci

http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0269/spec-0269-51581-0467.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0301/spec-0301-51942-0460.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0302/spec-0302-51616-0435.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0329/spec-0329-52056-0059.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0342/spec-0342-51691-0089.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/2881/spec-2881-54502-0508.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/2947/spec-2947-54533-0371.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/104/spectra/2957/spec-2957-54807-0164.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/104/spectra/2962/spec-2962-54774-0461.fits 
http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/2974/spec-2974-54592-0185.fits 

Répondre

1

Si vous aurez toujours ce modèle, vous pouvez essayer:

fileName = strsplit(myUrl, '/')(end) 
number = strsplit(fileName(5:end), '.')(0) 

Gonna marcher à travers cette compréhension de la cause est tout. ..

Nous commençons par

http://dr12.sdss3.org/sas/dr12/sdss/spectro/redux/26/spectra/0269/spec-0269-51581-0467.fits 

D'abord nous avons divisé l'URL sur les caractères /. Cela retournera un vecteur de chaînes séparé de ce personnage. Puisque le numéro à trier se trouve après la dernière /, nous pouvons passer le end pour récupérer le dernier. Maintenant, nous avons

spec-0269-51581-0467.fits 

Ensuite, retirons que spec- satanés du nombre. Cette étape n'est pas réellement nécessaire, car elle est constante dans toutes les URL, mais faisons-le simplement pour le plaisir. Nous pouvons utiliser la sous-chaîne de Matlab pour saisir les caractères après le -, en utilisant fileName(5:end). Cela va créer une chaîne commençant par le 5ème caractère (dans ce cas, un 0) et continuer jusqu'à la fin. Grand, maintenant nous avons

0269-51581-0467.fits 

Vous cherchez bien! Encore une fois, cette partie n'est pas complètement nécessaire non plus, mais juste au cas où, pour une raison quelconque, vous pourriez avoir besoin, je l'ai inclus. Nous pouvons utiliser la fonction de nouveau strsplit, mais cette fois divisé sur la ., et de saisir le premier élément en passant un 0. Maintenant, nous avons

0269-51581-0467 

Allez-y et trier ce petit gars et vous êtes bon aller!

+1

Merci, j'ai utilisé une variante de votre première réponse. Je suis juste venu ici pour vous «remercier» après avoir fini mon travail. J'ai fait ma tâche en la divisant sur "-" et il m'a donné 4 cordes, triées le 2ème et en utilisant les indices de cela: en utilisant [this] (http://stackoverflow.com/questions/37948031/removing- (non-unique-values-and-rearranging-vectors) et [this] (https://www.mathworks.com/matlabcentral/answers/160560-access-cell-array-inside-another-cell-array) question: je trié l'autre et que combiné avec 'strcat' pour récupérer les URL complètes. –