turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

08-01-2012 11:53 PM

Hi,

I need to calculate the difference between a row vectror and a column vector in a matrix. For example:

vr = {10 15}

vc = {5 10}

m = {5 10,

0 5}

m = is the difference between them. m[1.1] = vr[1] - vc[1], m[1,2] = vr[2] - vc[1] etc.

Currently I am doing this using a loop. Is there a way to accomplish this using vector/matrix notation?

Thanks,

Eyal

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

08-02-2012 03:10 AM

The repeat function is one way of doing this. For example:

proc iml;

vr = {10 15};

vc = {5, 10};

m=repeat(vr,2,1)-repeat(vc,1,2);

print m;

quit;

where 2 is the length of both vectors. Note that in your example vc is not a column vector, so I have added a comma above.

Hope that helps.

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

08-03-2012 06:48 AM

Ian has the right idea, although you only need to use the REPEAT function once:

vr = {10 15};

vc = {5 10};

v = repeat(vr, ncol(vc)); /* repeat vector to create matrix */

m = v - vc`; /* subtract i_th element from i_th row */

print m;

For details, see this article on "Shorthand notation for row and column operations."