2016-06-18 129 views
0

我有數據,並有不同的y值分別一些真正和IMG值它被安排在下列順序重新排列向量到矩陣

test_data

現在你可以看到每個x值。 x具有尺寸m x 1y具有尺寸n x 1。現在我想要以新矩陣的維數爲m x n的方式將數據排列在新矩陣中。換句話說,x將成爲我的行,y的值將成爲我的列,相應地,對於每個xy,該值將進入如下的新矩陣。

new_matrix(m,n)= real*exp{img} 

即對於每個xy值的實部應與虛數部分的指數相乘,並進入新的矩陣。

回答

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

你得到的是一個矩陣的稀疏表示。使用稀疏constructior是最簡單的(但可能不是最快)的方式來獲得您的矩陣:

full(sparse(data(:,1)+1,data(:,2),data(:,3) .* exp(data(:,4))))