Post Reply 
How to obtain element-wise squaring of vector/matrix?
11-26-2019, 07:40 PM
Post: #1
How to obtain element-wise squaring of vector/matrix?
I'm implementing a non-linear fitting routine and [/code]I need to square the elements of a vector from within a program. From the CAS screen I can easily square the elements of a vector [1, 2, 3, 4]:
   

The simple program below has a syntax error:

Code:

EXPORT DEMO()
BEGIN
  LOCAL myvec;

  myvec := [1, 2, 3, 4];
  apply(x→x^2, myvec);
END;

I don't know what I'm doing wrong.

I looked for a function that would square element-wise, and "apply" seemed to fit the bill. I'm trying to avoid a FOR loop.

I think it would be easier if I just squared a list of numbers, then converted the answer to a vector?
Find all posts by this user
Quote this message in a reply
11-26-2019, 08:47 PM
Post: #2
RE: How to obtain element-wise squaring of vector/matrix?
Hi,

apply is a CAS command that does not work under Home. Try converting to a CAS program by sandwiching your code between #cas and #end. Hopefully, that will work.

Take care & good luck, Steve
Find all posts by this user
Quote this message in a reply
11-26-2019, 11:18 PM
Post: #3
RE: How to obtain element-wise squaring of vector/matrix?
Alternatively you could also use the "point" operator .^ for element wise power operator on a vector or matrix , e.g.:

Code:
[1, 2, 3, 4].^2

resulting in: [1, 4, 9, 16]
Find all posts by this user
Quote this message in a reply
11-27-2019, 07:16 AM
Post: #4
RE: How to obtain element-wise squaring of vector/matrix?
(11-26-2019 08:47 PM)swagner53 Wrote:  Hi,

apply is a CAS command that does not work under Home. Try converting to a CAS program by sandwiching your code between #cas and #end. Hopefully, that will work.

Take care & good luck, Steve

I found this works:
Code:

#cas
DEMO2():=
BEGIN
  apply(x→x^2, [1, 2, 3, 4]);
END;
#end

Thanks!
Find all posts by this user
Quote this message in a reply
11-27-2019, 07:20 AM
Post: #5
RE: How to obtain element-wise squaring of vector/matrix?
(11-26-2019 11:18 PM)goetz Wrote:  Alternatively you could also use the "point" operator .^ for element wise power operator on a vector or matrix , e.g.:

Code:
[1, 2, 3, 4].^2

resulting in: [1, 4, 9, 16]

Fantastic!

It seems I still have a ways to go digesting the reference manual - these point operators didn't register while searching for element-wise operators. Guess I have a ways to go to learn how to search the documents.
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 2 Guest(s)