2016-10-26 4 views
1

Я довольно новичок в APL и изо всех сил пытаюсь умножить каждый элемент вектора v на вектор таким образом, что он возвращает квадратную матрицу nxn, где n - длина вектор.Умножьте векторные элементы по вектору для возврата квадратной матрицы

Например,

v ← 1 0 0 1. 

Я попытался создать такую ​​функцию, как:

⍳⍴v{⍵×⍵[⍺]}v 

    1 4 9 16 

Я неисправного итерировать IODA через вектор, который является одна часть мне нужно руководство по , Моя общая цель состоит в том, чтобы вернуть матрицу:

v_1 XV -> 1 0 0 1

v_2 XV -> 0 0 0 0

V_3 XV -> 0 0 0 0

v_4 xv -> 1 0 0 1

Я буду продолжать пытаться понять это. Любая помощь приветствуется, спасибо!

ответ

0

«Внешний продукт» приходит на помощь:

 (⍳10)∘.×⍳10 
1 2 3 4 5 6 7 8 9 10 
2 4 6 8 10 12 14 16 18 20 
3 6 9 12 15 18 21 24 27 30 
4 8 12 16 20 24 28 32 36 40 
5 10 15 20 25 30 35 40 45 50 
6 12 18 24 30 36 42 48 54 60 
7 14 21 28 35 42 49 56 63 70 
8 16 24 32 40 48 56 64 72 80 
9 18 27 36 45 54 63 72 81 90 
10 20 30 40 50 60 70 80 90 100 

Кстати, в случае, если вы пытаетесь узнать Dyalog APL, я рекомендовал бы иметь взгляд на «Mastering Dyalog APL». И в случае, если вы пытаетесь изучить другой диалект, я бы рекомендовал рассмотреть возможность перехода к Dyalog. (Я Dyalog-Fanboy и сделал изменения сам 20 лет назад. Сегодня Dyalog, по-видимому, является практически единственным APL-Interpreter, который активно развивается и развивается ...)

+0

Я ценю помощь и рекомендации, это действительно полезно! – toeknee97

+0

GNU APL также активно развивается и совершенствуется. – Lobachevsky

+0

Хорошо, спасибо за информацию. Не совсем уверен в статусе этого ... – MBaas