Delete zeros form multiple columns in a matrix

1 view (last 30 days)
pavan kurdekar on 8 May 2021
Commented: DGM on 9 May 2021
How do I reduce a matrix with multiple initial zeros
A=[0 0 0 0 0 ; 0 0 0 0 1 ; 0 0 1 0 1 ; 0 1 1 0 1 ; 0 1 1 1 1; 1 1 1 1 1; 1 1 1 1 1 ]
to
A = [1 1 1 1 1
1 1 1 1 1
1 1 1 1
1 1 1
1 1
1]
Basically delete all zero from all the column

the cyclist on 8 May 2021
A numeric data type cannot have empty elements.
You have a couple options. You could use a cell array, which can have empty elements. Or perhaps you could replace the zeros with NaN.
What are you planning on doing as a next step with the result?
DGM on 9 May 2021
If you don't want zeros to plot, just replace them with NaN. NaN values don't plot.
For actual handling of electrical signal data, I can't imagine a scenario where zeros are categorically meaningless. If you're running into problems in further calculations, I doubt that stripping all zeros is the appropriate solution.

Image Analyst on 8 May 2021
I agree with the cyclist in that you probably don't really need to do this in your next step, whatever it is.
That said, you can use sparse() but I really, really doubt you want to, or need to, do that.
If you just want to print it out to the command line, you can use a loop with fprintf() and just print those that are 1 and print a space for the zeros.
But a matrix cannot have "holes" or "ragged edges". There has to be something there.
Image Analyst on 8 May 2021
How are you going to do that? And how will that solve the "problem"? Again, I don't know why there is a "problem" in the first place and you can't just use your original A matrix.

R2019b

Community Treasure Hunt

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

Start Hunting!