如何将矩阵的非零项的索引转换为字符串

时间:2011-12-22 10:37:47

标签: matlab

给定大小 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'等等

3 个答案:

答案 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'