我有一个100000x8矩阵,我需要将每一行转换为一些符号表示。 我有这个工作没有问题,但做我的矩阵的大小我想矢量化解决方案。
以下是我的工作:
cutoff = [-inf -1.15 -0.67 -0.32 0 0.32 0.67 1.15];
for k = 1 : length(matrix)
tmp = matrix(k,:);
for i = 1 : length(tmp)
string(i) = sum( (cutoff <= tmp(i)), 2 );
end
end
因此,例如,如果我的矩阵的第1行是0.1053 0.1053 0.1053 0.1053 0.0737 -0.0308 -0.0034 0.0353我得到字符串= 5 4 6 3 4 5 5 5。 任何帮助将非常感激, 谢谢你的时间。
答案 0 :(得分:2)
要对解决方案进行矢量化,您可以使用bsxfun
结合重塑
string = sum(bsxfun(@ge,matrix,reshape(cutoff,1,1,[])),3);
cutoff
变为1乘1乘3的数组,因此每个元素都会得到总和。
BTW:您可能希望避免对未知行数的数组length
:如果行数小于列数,length
将返回列数。而是使用size(matrix,1)
作为行数。