find the last non-zero column in matrix in pre-allocated matrix

4 Ansichten (letzte 30 Tage)
Hello, My matlab code is creating very very matrix and I didn't pre-allocate it before. Because I always need to know the size of matrix. However, due to memory problem I had to make a very large zero matrix and fill in the matrix with new value. Any my question is to how to find the last non-zero column in that matrix "in the most efficient way". for exam if I have a matrix M = zeros(10^9,6) and there is some value like the follwign matrix how to find row 6 as the answer. Thank you,
M= [3388 3279 3284 3383 3279 3278; 3388 3383 2043 2038 2038 0; 3387 3388 2038 2037 2032 2037; 3388 3389 3384 3383 2038 0; 3388 3279 3280 3389 3274 3279; 0 0 0 0 0 0; 0 0 0 0 0 0]

Akzeptierte Antwort

Mohammad Abouali
Mohammad Abouali am 16 Okt. 2014
Bearbeitet: Mohammad Abouali am 16 Okt. 2014
1) if you are looking for las non-zero column why the answer to your example is row 6?
2) if you are looking for last non-zero row, shouldn't the answer to your example be 5? in that case find(any(M,2),1,'last') would give 5 as the answer

Weitere Antworten (3)

Geoff Hayes
Geoff Hayes am 16 Okt. 2014
Bearbeitet: Geoff Hayes am 16 Okt. 2014
Mahsa - try using the any function to determine which rows have at least one non-zero element as
nzRows = any(M,2);
nzRows will be a vector of ones and zeros where a one indicates that the row has at least one non-zero element, and a zero indicates that all elements in the row are all zero. The use find to find the last element in nzRows that is a one. Type doc find for details on how to use this function.

Mahsa
Mahsa am 27 Mär. 2015
another way is to delete the zeros
if m = [ 1 2 3 4 5 0 0 0 0 0 0 0 0] m(m==0)=[] m= [1 2 3 4 5];
However my question is what to do if zero is one of the real values like the following example:
m = [ 1 2 0 3 4 0 5 0 0 0 0 0 0 0 0];
I'm looking for a command that gives me
m = [ 1 2 0 3 4 0 5]
Thank you

Mahsa
Mahsa am 27 Mär. 2015
Oh I see it can be answered by find(any(M,1),1,'last')

Kategorien

Mehr zu Mathematics finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by