我有数据,按以下顺序排列
现在,您可以看到每个x
值都有不同的y
值以及一些real和img值。 x
的维度为m x 1
,y
的维度为n x 1
。现在我想以新矩阵的维度为m x n
的方式在新矩阵中排列数据。换句话说,x
将是我的行,y
的值将是我的列,相应地,对于每个x
和y
,值将进入新矩阵,如下所示。
new_matrix(m,n)= real*exp{img}
即。对于每个x
和y
值,实部应该与虚部的指数相乘并进入新矩阵。
答案 0 :(得分:1)
MATLAB使用列主索引,因此如果您创建一个m
x n
的矩阵然后填充它,它将首先填充行,然后填充列。您按行主顺序排序(如果不是,我们可以使用sortrows
确保它是)。然后,我们可以使用最后两列计算real * exp(imag)
并将其重新整形为n
x m
,然后转置它以获取m
x n
基质
data = [0 1 25 12
0 2 15 26
1 1 78 26
1 2 25 63
2 1 26 35
2 2 45 63
3 1 56 26
3 2 48 2];
% Ensure that the data is in the correct order
data = sortrows(data);
% Determine the size of the output matrix
m = numel(unique(data(:,1)));
n = numel(unique(data(:,2)));
% Compute real * exp(imag) and make it the correct shape
out = reshape(data(:,3) .* exp(data(:,4)), n, m).';
% 4.0689e+06 2.9359e+12
% 1.5267e+13 5.7345e+28
% 4.1236e+16 1.0322e+29
% 1.0961e+13 3.5467e+02
答案 1 :(得分:1)
你得到的是矩阵的稀疏表示。使用稀疏构造函数是获取矩阵的最简单(但可能不是最快)的方法:
full(sparse(data(:,1)+1,data(:,2),data(:,3) .* exp(data(:,4))))