gpt4 book ai didi

arrays - 如何在 matlab 中对子矩阵进行 "iterate"

转载 作者:太空宇宙 更新时间:2023-11-03 20:33:11 25 4
gpt4 key购买 nike

我在 Matlab 中有 36x80 矩阵。它由 3x2 阵列组成,这些阵列是盲文的符号。即

0 0 0 1 0 1 0 0 .....
0 1 0 0 1 0 0 0 .....
0 1 0 1 0 1 1 1 .....
.....................

其中第一个 3x2 子矩阵表示“p”字母

0 0 
0 1
0 1

接下来是“r”等等。我有许多代表盲文符号的“模式”3x2 矩阵。

那么大的矩阵怎么翻译成英文字符的矩阵?

最佳答案

您可以将此矩阵转换为元胞数组,例如:

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

这应该会更快,尤其是当您有大量数据时。

关于arrays - 如何在 matlab 中对子矩阵进行 "iterate",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40007358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com