Matrix/Array 28/48/50 Question



Post: #11

Hello all

Can I dynamically access an array or matrix element by simply accessing it these ways:

matrix/array name[var]

or

matrix/array name[row, col]

Or am I only to use GET and PUT?


Edited: 4 June 2012, 2:41 p.m. after one or more responses were posted


Post: #12

Sadly not. You'll need to use GET or GETI.


Post: #13

Okay. Besides, that does follow the Postfix structure so, no matter. Just a thought.


Post: #14

Quote:
Just a thought.

And not a bad one either! I picked it up in RPL+ where you can use the array syntax you suggest. You also have a choice of 1-based or 0-based indices, and automatic support for circular arrays. (But RPL+ is not available on those HP calcs.)


Post: #15

Well, this is a new one...RPL+. Hmm. Which calcs employ RPL+ ?


Post: #16

So far, RPL+ is only implemented in one iPhone app: ND1 (ND0 is a free version to try out.)

If you visit the forum, you can learn about what other devices are planned to be supported in the future.

If you know RPL and are just curious about what's new: RPL+ for RPL Users

Post: #17

Hello Matt,

I found the following process working for me:

'M(row,column)' EVAL @ to extract a matrix element
N 'M(row, column)' STO @ to store a number N into a matrix element

Instead of EVAL in the first case you can use \->NUM, too.

I've tried this on the HP-49G, 49G+ and 50G.

Hope this helps

Regards

Karl


Post: #18

Hi

I also use this and it works fine (49/50).

Exemple to try :

 { 5 5 } RANM  'Mat' STO         @ Create a 5x5 random matrix and store it

2 'a' STO

'Mat(a,2)' EVAL @ Return the value

99 'Mat(a,2)' STO @ Store 99 in a,2 cell

'Mat(a,2)' EVAL 'Mat(5,5)' STO @ Put value of a,2 in 5,5

IF 'Mat(a,2)==Mat(5,5)' THEN "Equal value " MSGBOX END
Mat @ Show result

It also works with 'vector'

[ 1 2 3 4 5 ] 'Vect' STO

'Vect(3)' EVAL

99 'Vect(5)' STO


Edited: 4 June 2012, 4:59 p.m.

Post: #19

Apologies. I had forgotten about this option.

Know though that it runs almost an order of magnitude slower!

From another discussion elsewhere:

Quote:
<< [1 2 3] -> x << 1. 1000. START 'x(1)' EVAL DROP NEXT >> >>
runs 6.5x slower than
<< [1 2 3] -> x << 1. 1000. START x 1 GET DROP NEXT >> >>

And that's 9x slower if you factor out the time for
<< 1. 1000. START NEXT >>
as one should.

(On Emu-48/HP-49G.)



Post: #20

Not certain which post to post this under. Thanks for all your brilliant methods to accomplish the functionality I needed.


Forum Jump: