在Matlab中将所有值放入一个向量

3

我有两个数组,A(500 x 128的整数值)和B(500 x 64的实数值)。我想将它们连接起来得到C。问题是Matlab会忽略所有B中的值,因为它们很小。有没有办法获得所有值而不被忽略?

谢谢。


3
我认为它们并没有被忽略,可能只是没有显示出来...请尝试使用C = [A, B]; C(1:10,129:130) - Stewie Griffin
1个回答

4
我认为这可以模拟您的问题:
A = int8(randi(4,4)*10);
B = rand(4,4)*10;
C = [A B] 

C =

  10  20  20  30   3   0   8   3
  40  10  40  40   2   6   1   2
  30  20  10  30   2   1   6   6
  40  20  40  30   9   9   5   5

为了达到您想要的结果,在连接数据之前,您需要为其添加一个类型:
C = [double(A) B]
C =

 Columns 1 through 7:

   10.00000   20.00000   20.00000   30.00000    2.92979    0.31162    7.73694
   40.00000   10.00000   40.00000   40.00000    1.71392    5.82900    1.08936
   30.00000   20.00000   10.00000   30.00000    1.83903    0.84160    5.75773
   40.00000   20.00000   40.00000   30.00000    8.81039    9.31400    4.60636

 Column 8:

    3.10192
    1.75853
    5.75013
    5.39383

当你提到要将A显示为双矩阵时,另一个矩阵B仍保持其原始类型。在MATLAB中,您可以在这里检查其他现有的类型。


1
有趣的是:将整数类型值和双精度值连接起来会产生整数类型结果。 - Luis Mendo
3
这在Matlab中是一种模式。整数和双精度数的运算结果返回一个整数。否则,进行整数运算会很麻烦,因为类似于“x=x+1”的语句会返回一个双精度数,而不是与x相同类型的值。 - Daniel
而我们中的许多人认为这是Matlab的失败之处。默认情况下(在许多其他语言中也是如此),应将操作强制转换为所呈现的最高精度类别。如果您不想这样做,请明确指定输入是什么。例如(R语法)x = x + 1L,其中“L”表示长整数。 - Carl Witthoft
@Daniel 啊,明白了。是的,这很有道理。 - Luis Mendo
@CarlWitthoft,这正是我最初的想法。也许Matlab在这方面的行为与其动态输入有关。正如Daniel所说,当x是整数时,使用x=x+1是很直观的,并且自动保持x的整数类型。 - Luis Mendo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接