版本: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'。还有其他简洁的方法吗?
答案 0 :(得分:5)
据我了解这个问题,上面有几个问题:
不幸的是,我没有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;
所以,我现在,不需要改变类型。