您可以將這個矩陣轉化爲一個單元陣列,如:
Bs = mat2cell(B,repelem(3,size(B,1)/3),repelem(2,size(B,2)/2));
哪裏B
是你原來的矩陣。
你必須準備以同樣的方式盲文代碼,這樣你就可以把它比作你的矩陣:
letters = {'p',[0 0;0 1;0 1];'r',[0 1;0 0;0 1]}; % ...and so on for all letters
然後你可以遍歷Bs
:
txt = char(zeros(size(Bs))); % the result
for k = 1:numel(Bs)
for l = 1:size(letters,1)
if isequal(Bs{k},letters{l,2})
txt(k) = letters{l,1};
break
end
end
end
這裏有另外一個選項,而無需將矩陣轉換爲單元陣列:
BB = reshape(reshape(B,3,[]),3,2,[]);
txt = char(zeros(size(B,1)/3,size(B,2)/2)); % the result
for k = 1:size(BB,3)
for l = 1:size(letters,1)
if isequal(BB(:,:,k),letters{l,2})
txt(k) = letters{l,1};
break
end
end
end
Thi s應該更快,特別是如果你有很多數據。
來源
2016-10-12 20:27:31
EBH
非常感謝,這正是我想要的! – Vitali