在matlab中将矩阵转换为符号

时间:2014-01-02 18:01:59

标签: matlab matrix

我有一个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。 任何帮助将非常感激, 谢谢你的时间。

1 个答案:

答案 0 :(得分:2)

要对解决方案进行矢量化,您可以使用bsxfun结合重塑

string = sum(bsxfun(@ge,matrix,reshape(cutoff,1,1,[])),3);

cutoff变为1乘1乘3的数组,因此每个元素都会得到总和。

BTW:您可能希望避免对未知行数的数组length:如果行数小于列数,length将返回列数。而是使用size(matrix,1)作为行数。