给定大小 nxk 的二进制矩阵 A ,我想创建一个大小 nx 1 的标签,以便标签(1) )包含一个字符串,其列号为A(1,:),其中条目为1
例如,如果A(1,:) = [0 1 0 1]则标签(1)='24'
如果A(2,:) = [0 0 1 0]则标签(2)='3'
如果A(3,:)= [1 1 1 1]则标签(3)='1234'等等
答案 0 :(得分:1)
试试这样:
function Labels = GetNonZeroEntries(A)
Labels = {};
for i=1:size(A,1)
ind = find(A(i,:));
indSt = num2str(ind);
Labels{i} = '';
for j=1:numel(indSt)
Labels{i} = [Labels{i} indSt(j)];
end
end
end
然后像这样跑:
GetNonZeroEntries([0 1 0; 1 1 0; 1 1 1])
答案 1 :(得分:1)
Label = {};
for i = 1:size(A, 1)
Label{i, 1} = regexprep(num2str(find(A(i, :))), ' ', '');
end
答案 2 :(得分:1)
没有循环:
A=[0 1 0 1; 0 0 1 0; 1 1 1 1];
[i,j]=find(A');
nums = mat2cell(i,hist(j,1:max(j)));
printnum = @(x) sprintf('%d',x);
cellfun(printnum, nums, 'UniformOutput', 0)
输出:
ans =
'24'
'3'
'1234'