在Matlab中输入一个向量

时间:2012-10-08 14:11:43

标签: matlab casting

版本:Matlab 2009a

我正在生成大小< 1x116286>的向量。使用randsrc()函数。由于我再次将它添加到相同大小但是uint8类型的矩阵中,我的做法如下 -

l=typecast(randsrc(1,v(2)),'uint8');

现在,Matlab已经更改了返回的元素向量 - [240,63,0]而不是[-1,1],大小为< 1x930288 uint8>。这是双倍的,uint8有不同的大小,但我希望在类型转换后使用相同大小和值的向量。

PS:我想在大小<1x116286&gt;的矩阵上从所有trhe值中减去或加'1'。还有其他简洁的方法吗?

2 个答案:

答案 0 :(得分:5)

据我了解这个问题,上面有几个问题:

  • uint8是无符号类型,因此不支持负偏移;
  • “typecast”函数用于重新解释现有数据,而不是转换它:在这里,您将randsrc(...)的浮点输出的每个字节解释为整数。

不幸的是,我没有Matlab方便测试,但以下内容应该提供更接近你所追求的东西:

l = int8( randsrc(1,v(2)) );

答案 1 :(得分:0)

而不是形成一个向量(-1,1 ...)并将其添加到某个向量'z',我做了类似的事情。

l =randsrc(1,v(2));
z(l==-1)=z(l==-1)-1;
z(l==1)=z(l==1)+1;

所以,我现在,不需要改变类型。