Matrix indexing, getting back my original matrix.
    9 次查看(过去 30 天)
  
       显示 更早的评论
    
Hi,
I have a matrix
mat= [ 1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9; ...       
       1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9];
and I sub-sample it using the simple command
newMat= mat(1:4:end, 1:4:end);
Is there a way later on to get back the indexes I lost from the original matrix, if I want to reconstruct it in a new matrix likewise
newMat2= zeros(size(mat, 1), size(mat, 2));
newMat2(1:4:end, 1:4:end) = newMat;
So what I want is to replace the columns and rows I lost with lets say NaN.
1 个评论
  Jan
      
      
 2014-6-14
				I do not get the problem. In your example you fill the missing values with zeros. So all you want to do is using nan() instead of zeros()?
采纳的回答
  Joseph Cheng
      
 2014-6-14
        Were you looking to get something like this?
mat= [ 1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9; ...       
       1 2 3 4 5 6 7 8 9; ...
       1 2 3 4 5 6 7 8 9];
selCol = 1:4:size(mat,2);
selRow = 1:2:size(mat,1);
newMat= mat(selRow, selCol);
newMat2= NaN*zeros(size(mat));
newMat2(selRow,selCol) = newMat;
newMat2 =
       1   NaN   NaN   NaN     5   NaN   NaN   NaN     9
     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       1   NaN   NaN   NaN     5   NaN   NaN   NaN     9
     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       1   NaN   NaN   NaN     5   NaN   NaN   NaN     9
     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       1   NaN   NaN   NaN     5   NaN   NaN   NaN     9
     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
       1   NaN   NaN   NaN     5   NaN   NaN   NaN     9
1 个评论
  Joseph Cheng
      
 2014-6-14
				There may be a way to figure out the increments based on the new mat size and original mat but need to think of the conditions.
For instance if you go 1:4:100 you get a 1x25. which you can see 4. but you can just round or floor or ceil +1 for all cases.
更多回答(1 个)
  Azzi Abdelmalek
      
      
 2014-6-14
        You haven't lost anything
mat=repmat(1:9,6,1)  % Example
new_mat=mat(1:4,1:4)
You have both the original matrix and the new one, maybe you can give more details about loosing indices
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
			
	产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



