这是一个难以通过谷歌搜索得到答案的问题。我刚接触Matlab并看到了下面的语句,但我不知道它的作用。x = x(:)的作用是什么?
答:x = x(:) 的作用是将矩阵x转变为列向量。
答:x = x(:) 的作用是将矩阵x转变为列向量。
这种语法通常用于确保x
是一个列向量:
x = x(:)
x
是一个行向量。x = x(:)'
正如其他人所说,x(:)会将x转换为向量,特别是列向量。这样做的重点在于,它使您的代码能够应对用户意外提供行向量的情况。例如:
x = 1:5;
创建了一个行向量。有些操作需要列向量。由于x(:)对于已经是列向量的向量什么也不做,这是编写健壮、稳定代码的一种方式。
当然,如果x是一个3x4矩阵,它仍然会将x转换为长度为12的列向量,因此最好的代码需要测试这样的情况,如果这是一个问题的话。
>> foo = uint8(0);
>> bar = double(0);
使用“whos”命令检查数据类型:
>> whos foo bar
Name Size Bytes Class Attributes
bar 1x1 8 double
foo 1x1 1 uint8
>> bar(:) = foo;
并且它仍然是一个双精度浮点数
>> whos foo bar
Name Size Bytes Class Attributes
bar 1x1 8 double
foo 1x1 1 uint8
将unit8赋值给double,不使用(:)运算符:
>> bar = foo;
并且它会变成一个uint8数据类型:
>> whos foo bar
Name Size Bytes Class Attributes
bar 1x1 8 uint8
foo 1x1 1 uint8
x=[1,2,3;4,5,6;7,8,9];
x=x(:);
语句x=x(:)将矩阵列出为列向量。输出如下:
1
2
3
4
5
6
7
8
9
x(:)
重新塑造您的矩阵。
因此,如果您的矩阵是
1 2 3
5 6 7
8 9 10
调用 x=x(:)
将 x
设置为
1
5
8
2
6
9
3
7
10
x(:)
应该完全等同于reshape(x, [], 1)
。但我不确定(我不确定这是否有记录)。我猜可以通过分析来尝试弄清楚。 - Oliver Charlesworth