将 (NxN) 阶矩阵的值转换为 (NxN, 1) 阶向量
converting values of a matrix of order (NxN) to a vector with order (NxN, 1)
我有一个矩阵,假设 A 的 NxN 阶(此处为 3x3)由以下公式给出:
A = | a b c|
| d e f|
| g h i|
我想将此矩阵转换为 [NxN, 1](此处为 9x1)阶向量:
P = |a|
|b|
|.|
|.|
|.|
|i|
所以,现在我用于将其转换为更大阶的矩阵和向量的是:
% A is a given matrix with some arbitrary values of order (N,M)
P = zeros(N*M, 1);
for i = 1:N
for j = 1:M
P((i-1)*M + j, 1) = A(i,j)
end
end
但我仍然在向量 P 中得到一些值为零的值。我不确定我做错了什么。有什么建议,代码中应该更正什么?
我还觉得有可能某些值与矢量 P 中一些已经填充的数据字段重叠。
您总是可以简单地展开矢量
P=A(:);
当然,您不喜欢这种排序方式
Aaux=A.'; %transpose first.
P=Aaux(:);
您可能想看看 reshape
function。
reshape 对于将向量转换为矩阵非常方便:
>> a = [1;2;3;4;5;6;7;8;9]
a =
1
2
3
4
5
6
7
8
9
>> M = 3
M =
3
>> N = 3
N =
3
>> b = reshape(a,M,N)
b =
1 4 7
2 5 8
3 6 9
或将矩阵转化为向量!:
>> a = [1 2 3; 4 5 6; 7 8 9]
a =
1 2 3
4 5 6
7 8 9
>> b = reshape(a,numel(a),1)
b =
1
4
7
2
5
8
3
6
9
如果您要将矩阵转换为向量,reshape
在与 numel
结合使用时尤其强大(已记录 here)。
我有一个矩阵,假设 A 的 NxN 阶(此处为 3x3)由以下公式给出:
A = | a b c|
| d e f|
| g h i|
我想将此矩阵转换为 [NxN, 1](此处为 9x1)阶向量:
P = |a|
|b|
|.|
|.|
|.|
|i|
所以,现在我用于将其转换为更大阶的矩阵和向量的是:
% A is a given matrix with some arbitrary values of order (N,M)
P = zeros(N*M, 1);
for i = 1:N
for j = 1:M
P((i-1)*M + j, 1) = A(i,j)
end
end
但我仍然在向量 P 中得到一些值为零的值。我不确定我做错了什么。有什么建议,代码中应该更正什么? 我还觉得有可能某些值与矢量 P 中一些已经填充的数据字段重叠。
您总是可以简单地展开矢量
P=A(:);
当然,您不喜欢这种排序方式
Aaux=A.'; %transpose first.
P=Aaux(:);
您可能想看看 reshape
function。
reshape 对于将向量转换为矩阵非常方便:
>> a = [1;2;3;4;5;6;7;8;9]
a =
1
2
3
4
5
6
7
8
9
>> M = 3
M =
3
>> N = 3
N =
3
>> b = reshape(a,M,N)
b =
1 4 7
2 5 8
3 6 9
或将矩阵转化为向量!:
>> a = [1 2 3; 4 5 6; 7 8 9]
a =
1 2 3
4 5 6
7 8 9
>> b = reshape(a,numel(a),1)
b =
1
4
7
2
5
8
3
6
9
如果您要将矩阵转换为向量,reshape
在与 numel
结合使用时尤其强大(已记录 here)。