help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: matrix: repeat last number before zero


From: Nicholas Jankowski
Subject: Re: matrix: repeat last number before zero
Date: Fri, 8 Nov 2019 20:53:43 -0500

> it's possibile to avoid loop? thank
>

Yes, but I don't quite have it figured out yet.  You need to learn
about different types of matrix indexing.  in particular, logical and
linear indexing.

try this (you could just do the last step, but each is instructive)

>> a = [4 3 2 5;0 4 0 5;5 0 0 0;6 1 4 1]
a =

   4   3   2   5
   0   4   0   5
   5   0   0   0
   6   1   4   1

>> a==0
ans =

  0  0  0  0
  1  0  1  0
  0  1  1  1
  0  0  0  0

>> a(a==0)
ans =

   0
   0
   0
   0
   0

>> shift(a,1,1)
ans =

   6   1   4   1
   4   3   2   5
   0   4   0   5
   5   0   0   0

>> shift(a,1,1)(a==0)
ans =

   4
   4
   2
   0
   5

>> a(a==0)=shift(a,1,1)(a==0)
a =

   4   3   2   5
   4   4   2   5
   5   4   0   5
   6   1   4   1

>> a(a==0)=shift(a,1,1)(a==0)
a =

   4   3   2   5
   4   4   2   5
   5   4   2   5
   6   1   4   1


SO, the last two steps do it for you.  I'm not sure if there's a
one-step way of filling in the stacked zeros.

see
https://octave.org/doc/interpreter/Index-Expressions.html

and
https://octave.org/doc/interpreter/Advanced-Indexing.html#Advanced-Indexing



reply via email to

[Prev in Thread] Current Thread [Next in Thread]