Несколько способов сделать это ...
Использование REGEXP :
wholeNumber = 1934; %# Your number
numberString = num2str(wholeNumber,16); %# Convert to a string
matches = regexp(numberString,'[1-9]','match'); %# Find matches
firstNumber = str2double(matches{1}); %# Convert the first match to a double
Использование ISMEMBER :
wholeNumber = 0.04; %# Your number
numberString = num2str(wholeNumber,16); %# Convert to a string
isInSet = ismember(numberString,'123456789'); %# Find numbers that are
%# between 1 and 9
numberIndex = find(isInSet,1); %# Get the first number index
firstNumber = str2double(numberString(numberIndex)); %# Convert to a double
EDIT:
Некоторое обсуждение этой темы возникло на одном из блогов MathWorks . Там представлены некоторые интересные дополнительные решения. Одна проблема, которая была поднята, имела векторизованные решения, поэтому вот одна векторизованная версия, которую я придумал:
numberVector = [1934 0.04 -56];
numberStrings = cellstr(num2str(numberVector(:),16));
firstIndices = regexp(numberStrings,'[1-9]','once');
firstNumbers = cellfun(@(s,i) s(i),numberStrings,firstIndices);