MATLAB Answers

I just need to get the numbers from this vector. The result must be a double. I need fast and clean code, as this operation is performed over and over again in my code.

2 views (last 30 days)
Clodoaldo de Souza Faria Júnior
Edited: Stephen on 22 Sep 2021
vector = {'G07'} {'G23'} {'G04'} {'G08'} {'G20'} {'G13'} {'G30'}
This code below is my code but it is slow when running too many times.
PRN = vector;
PRN = char(PRN);
PRN = PRN(:,2:end);
PRN = str2num(PRN);

Answers (2)

Mathieu NOE
Mathieu NOE on 21 Sep 2021
hello
try this alternative :
vector = [{'G07'} {'G23'} {'G04'} {'G08'} {'G20'} {'G13'} {'G30'}];
% Calling the regexp() function over the above cell array to extract number part
B = regexp(vector,'\d+(\.)?(\d+)?','match');
% Calling the str2double() function to convert the text to double-precision values
out = str2double([B{:}])

Stephen
Stephen on 21 Sep 2021
Edited: Stephen on 22 Sep 2021
Fastest:
C = {'G07','G23','G04','G08','G20','G13','G30'};
V = sscanf(sprintf('%s',C{:}),'G%f')
V = 7×1
7 23 4 8 20 13 30

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!