Delete element from row, shift the row and add a nan at the end of the row efficiently
Mostra commenti meno recenti
Say that we have a matrix A
A =
1 2 3 4 5
5 4 3 2 1
I want to delete number 3 for example in the first row so that I get:
A =
1 2 4 5 nan
5 4 3 2 1
(Please note that the efficiency is the main concern in my question)
Possible solution is:
A(1,:)= [A(1,1:2) A(1,4:5) nan]
However, as my matrix is big, and I want to do this operation frequently, I want to know how I can do this in an efficient way if any?.
thank you.
Risposte (2)
Shashank Prasanna
il 6 Mag 2013
A = [1 2 3 4 5;5 4 3 2 1];
[~,n] = size(A);
r = 2; % Number to be removed and replaced with nan in the end.
A(1,:) = circshift(A(1,:)',n-r)';
A(1,end) = NaN;
disp(A)
Jan
il 6 Mag 2013
0 voti
Operating on rows of a matrix is less efficient than on columns, because the processor can access neighboring elements of the RAM faster. Therefore it might be more efficient to transpose the matrix.
Categorie
Scopri di più su NaNs in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!