在Matlab中输入一个向量

Man*_*odi 1 matlab casting

版本:Matlab 2009a

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

l=typecast(randsrc(1,v(2)),'uint8');
Run Code Online (Sandbox Code Playgroud)

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

PS:我想在大小<1x116286>的矩阵上从所有trhe值中减去或加"1".有没有其他巧妙的方法来做到这一点?

Jam*_*lby 5

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

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

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

l = int8( randsrc(1,v(2)) );
Run Code Online (Sandbox Code Playgroud)