Probe_RL = {'1Fe', '1Fe', '1Fe,1Si', '1Fe', '0.35Si,1Fe', '0.19Fe,0.57K,1Si', '0.47Fe,0.68K,1Si', '1Si', '0.81Fe,1Si', '1Fe', '1Si', '1Fe', '0.44Fe,1Si', '1Na', '1Fe', '1Si', '0.43Fe,1Si', '0.6Si,1Fe', '1Fe', '0.15Fe,1Si', '1Fe', '1Fe'};
Datenbank = {'1Na,1U Group 204', '1Bi,1V Group 205', '1Fe,1Si Group 206', '0.11Si,1Mg Group 207', '0.83Mg,1Si Group 208', '0.1Ca,0.2Al,1Si Group 209', '0.83Ca,1Si Group 210', '0.67Ca,1Al,1Si Group 211', '0.5Co,1Na Group 212', '0.5Pb,1Co Group 213', '0.5Na,1Si Group 214', '1Al,1Ca Group 215', '0.5Co,1Ni Group 216'};
ProbeDat = cell(numel(Probe_RL),2);
for k = 1:numel(Probe_RL)
components = strsplit(Probe_RL{k},',');
numComponents = numel(components);
quantity = zeros(numComponents,1);
element = cell(numComponents,1);
for m = 1:numel(components)
[quantity(m),element{m}] = numstr(components{m});
ProbeDat{k,2} = quantity;
ProbeDat{k,3} = Probe_RL{k};
RefDat = cell(numel(Datenbank),3);
for k = 1:numel(Datenbank)
parts = strsplit(Datenbank{k},{',',' '});
quantity = zeros(numParts-2,1);
element = cell(numParts-2,1);
[quantity(m),element{m}] = numstr(parts{m});
group = str2double(parts{end});
allElements = sort(unique(vertcat(ProbeDat{:,1},RefDat{:,1})));
numVbls = numel(allElements);
Probe = array2table(zeros(size(ProbeDat,1),numVbls),...
'VariableNames',allElements);
Probe.Name = cell(height(Probe),1);
Probe = Probe(:,["Name";allElements]);
DataBank = array2table(zeros(size(RefDat,1),numVbls+1),...
'VariableNames',['Group';allElements]);
for m = 1:numel(ProbeDat{k,1})
Probe.(ProbeDat{k,1}{m})(k) = ProbeDat{k,2}(m);
Probe.Name{k} = ProbeDat{k,3};
for k = 1:height(DataBank)
for m = 1:numel(RefDat{k,1})
DataBank.(RefDat{k,1}{m})(k) = RefDat{k,2}(m);
DataBank.Group(k) = RefDat{k,3};
disp(DataBank)
Group Al Bi Ca Co Fe K Mg Na Ni Pb Si U V
_____ ___ __ ____ ___ __ _ ____ ___ __ ___ ____ _ _
204 0 0 0 0 0 0 0 1 0 0 0 1 0
205 0 1 0 0 0 0 0 0 0 0 0 0 1
206 0 0 0 0 1 0 0 0 0 0 1 0 0
207 0 0 0 0 0 0 1 0 0 0 0.11 0 0
208 0 0 0 0 0 0 0.83 0 0 0 1 0 0
209 0.2 0 0.1 0 0 0 0 0 0 0 1 0 0
210 0 0 0.83 0 0 0 0 0 0 0 1 0 0
211 1 0 0.67 0 0 0 0 0 0 0 1 0 0
212 0 0 0 0.5 0 0 0 1 0 0 0 0 0
213 0 0 0 1 0 0 0 0 0 0.5 0 0 0
214 0 0 0 0 0 0 0 0.5 0 0 1 0 0
215 1 0 1 0 0 0 0 0 0 0 0 0 0
216 0 0 0 0.5 0 0 0 0 1 0 0 0 0
idl = ismembertol(DataBank{:,2:end},Probe{k,2:numCol},tol,...
'DataScale',1,'ByRows',true);
Probe.Group(k) = DataBank.Group(idl);
Probe = Probe(:,['Name';'Group';allElements]);
disp(Probe)
Name Group Al Bi Ca Co Fe K Mg Na Ni Pb Si U V
____________________ _____ __ __ __ __ ____ ____ __ __ __ __ ____ _ _
{'1Fe' } NaN 0 0 0 0 1 0 0 0 0 0 0 0 0
{'1Fe' } NaN 0 0 0 0 1 0 0 0 0 0 0 0 0
{'1Fe,1Si' } 206 0 0 0 0 1 0 0 0 0 0 1 0 0
{'1Fe' } NaN 0 0 0 0 1 0 0 0 0 0 0 0 0
{'0.35Si,1Fe' } NaN 0 0 0 0 1 0 0 0 0 0 0.35 0 0
{'0.19Fe,0.57K,1Si'} NaN 0 0 0 0 0.19 0.57 0 0 0 0 1 0 0
{'0.47Fe,0.68K,1Si'} NaN 0 0 0 0 0.47 0.68 0 0 0 0 1 0 0
{'1Si' } 209 0 0 0 0 0 0 0 0 0 0 1 0 0
{'0.81Fe,1Si' } 206 0 0 0 0 0.81 0 0 0 0 0 1 0 0
{'1Fe' } NaN 0 0 0 0 1 0 0 0 0 0 0 0 0
{'1Si' } 209 0 0 0 0 0 0 0 0 0 0 1 0 0
{'1Fe' } NaN 0 0 0 0 1 0 0 0 0 0 0 0 0
{'0.44Fe,1Si' } NaN 0 0 0 0 0.44 0 0 0 0 0 1 0 0
{'1Na' } NaN 0 0 0 0 0 0 0 1 0 0 0 0 0
{'1Fe' } NaN 0 0 0 0 1 0 0 0 0 0 0 0 0
{'1Si' } 209 0 0 0 0 0 0 0 0 0 0 1 0 0
{'0.43Fe,1Si' } NaN 0 0 0 0 0.43 0 0 0 0 0 1 0 0
{'0.6Si,1Fe' } NaN 0 0 0 0 1 0 0 0 0 0 0.6 0 0
{'1Fe' } NaN 0 0 0 0 1 0 0 0 0 0 0 0 0
{'0.15Fe,1Si' } 209 0 0 0 0 0.15 0 0 0 0 0 1 0 0
{'1Fe' } NaN 0 0 0 0 1 0 0 0 0 0 0 0 0
{'1Fe' } NaN 0 0 0 0 1 0 0 0 0 0 0 0 0
summary = Probe(:,{'Name','Group'})
summary =
Name Group
____________________ _____
{'1Fe' } NaN
{'1Fe' } NaN
{'1Fe,1Si' } 206
{'1Fe' } NaN
{'0.35Si,1Fe' } NaN
{'0.19Fe,0.57K,1Si'} NaN
{'0.47Fe,0.68K,1Si'} NaN
{'1Si' } 209
{'0.81Fe,1Si' } 206
{'1Fe' } NaN
{'1Si' } 209
{'1Fe' } NaN
{'0.44Fe,1Si' } NaN
{'1Na' } NaN
{'1Fe' } NaN
{'1Si' } 209
function [num,str] = numstr(s)
isNum = isstrprop(s,"digit")| isstrprop(s,"punct");
num = str2double(s(isNum));