Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

sort a string based on particular value

1 Ansicht (letzte 30 Tage)
Sajid Afaque
Sajid Afaque am 19 Mär. 2020
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
Hello All,
i have a list of type
ch = { 'temp_25_vgs_8', 'temp_25_vgs_3', 'temp_25_vgs_9', 'temp_25_vgs_10', 'temp_20_vgs_8', 'temp_20_vgs_5', 'temp_25_vgs_5'};
i need to sort it based on vgs value (or both vgs and temp) and get back the list as
ch = { 'temp_20_vgs_5',
'temp_20_vgs_8',
'temp_25_vgs_3',
'temp_25_vgs_5',
'temp_25_vgs_8',
'temp_25_vgs_9',
'temp_25_vgs_10'
} ;
please help me resolve that,
than you in advance

Antworten (1)

Sriram Tadavarty
Sriram Tadavarty am 19 Mär. 2020
Bearbeitet: Sriram Tadavarty am 19 Mär. 2020
Hi Sajid,
The sort function with the arrayfun can be used to check this.
chs = arrayfun(@(x) str2double(string([ch{x}(5+1:8-1) ch{x}(13:end)])),1:numel(ch))
[~,i] = sort(chs);
out = ch(i);
Hope this helps.
Regards,
Sriram
  2 Kommentare
Sajid Afaque
Sajid Afaque am 19 Mär. 2020
Hello Sriram,
it is only taking temp into consideration.
i need it to get sort based on vgs value also
K
K>> sort(ch)'
ans =
'temp_20_vgs_5'
'temp_20_vgs_8'
'temp_25_vgs_10'
'temp_25_vgs_3'
'temp_25_vgs_5'
'temp_25_vgs_8'
'temp_25_vgs_9'
Sriram Tadavarty
Sriram Tadavarty am 19 Mär. 2020
Hi Sajid,
Here is what you are looking for, if you know what the index locations are already, then you perform something as such:
chs = arrayfun(@(x) str2double(string([ch{x}(5+1:8-1) ch{x}(13:end)])),1:numel(ch))
[~,i] = sort(chs);
out = ch(i);
To find the locations exactly which has the starting numbers, you can use this
ind = regexp(ch,'_'); % it provides index in each cell
Let me know if this helped.
Thanking you.
Regards,
Sriram

Diese Frage ist geschlossen.

Tags

Produkte


Version

R2013b

Community Treasure Hunt

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

Start Hunting!

Translated by