Matlab 如何将矩阵中的小数转换为整数?

Matlab 如何将矩阵中的小数转换为整数?,matlab,matrix,Matlab,Matrix,如果我的输入矩阵为: v = -0.7071 0.5774 0.4082 0.0000 -0.5774 0.8165 0.7071 0.5774 0.4082 输出应为: v = -1 1 1 0 -1 2 1 1 1 以防这正是你的例子 万一双打不够好: v = int3

如果我的输入矩阵为:

v =

       -0.7071    0.5774    0.4082
        0.0000   -0.5774    0.8165
        0.7071    0.5774    0.4082
输出应为:

v =
       -1         1         1
        0        -1         2
        1         1         1
以防这正是你的例子

万一双打不够好:

v = int32(v); % or whichever integer you want
感谢@rayryeng:

v = bsxfun(@rdivide, v, abs(min(v,1)));

如何从输入到输出???ceilv*2???ceilv*2没有给出期望的结果。我试图将矩阵中的小数简化为最小整数。将矩阵中的小数简化为最小整数这意味着什么?你必须定义它。0.8怎么变成2?作为那个家伙,整数也是十进制值。我会用v=bsxfun@rdivide,v,absminv,1;。。。它应该会更快,但是+1用于破译OP尝试执行的操作。我对调用匿名函数的函数(如arrayfun、accumarray、bsxfun)相当缺乏经验,因此我总是很乐意学习新的东西,谢谢!啊:不客气。bsxfun做的就是所谓的数据广播。rdivide是执行右数组除法的函数,即A./B。此函数调用具体要做的是首先找到v的每列的最小值,找到绝对值,然后复制此向量以匹配与v相同的大小,然后执行元素右除法。这实际上执行循环代码的功能。bsxfun在两个输入之间的引擎盖下进行repmat调用,以便它们的大小匹配,然后在每个输入之间的第一个参数上应用该操作。顺便说一句,如果您有时间,请访问我们的MATLAB聊天室。我们始终欢迎新用户使用StackOverflow!-。。。另外,欢迎来到StackOverflow!
v = bsxfun(@rdivide, v, abs(min(v,1)));