# Define new operations for a matrix

2 visualizaciones (últimos 30 días)
Radu Mihail el 28 de Dic. de 2020
I have 2 vectors x=[0 1 2 0 1 0 3 1 0] and its transposed column vector y=x'
I need to define a new operation , let's say * following the multiplication table underneath
0 1 2 3
1 0 3 2
2 3 0 1
3 2 1 0
For instance under this new * commutative operation
0*1=1*0=1
1*1=0 or
3*2=1 or 2*3=1 or
3*3=0
And I would like to build a matrix A having first row x and first column y where the elements of the matrix would be each the result of individual element x.*y or y.*x but using only vectors x and y and defining the new operation * .
The result should be
A=[0 1 2 0 1 0 3 1 0; 1 0 3 1 0 1 2 0 1; 2 3 0 2 3 2 1 3 2; 0 1 2 0 1 0 3 1 0;1 0 3 1 0 1 2 0 1;0 1 2 0 1 0 3 1 0; 3 2 1 3 2 3 0 2 3;1 0 3 1 0 1 2 0 1;0 1 2 0 1 0 3 1 0]
A =
0 1 2 0 1 0 3 1 0
1 0 3 1 0 1 2 0 1
2 3 0 2 3 2 1 3 2
0 1 2 0 1 0 3 1 0
1 0 3 1 0 1 2 0 1
0 1 2 0 1 0 3 1 0
3 2 1 3 2 3 0 2 3
1 0 3 1 0 1 2 0 1
0 1 2 0 1 0 3 1 0
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Stephen23 el 29 de Dic. de 2020
Editada: Stephen23 el 29 de Dic. de 2020
x = [0,1,2,0,1,0,3,1,0];
y = x.';
V = 0:3; % define value range of multiplication table
M = [0,1,2,3;1,0,3,2;2,3,0,1;3,2,1,0] % define multiplication table
M = 4×4
0 1 2 3 1 0 3 2 2 3 0 1 3 2 1 0
A = interp2(V,V,M,x,y)
A = 9×9
0 1 2 0 1 0 3 1 0 1 0 3 1 0 1 2 0 1 2 3 0 2 3 2 1 3 2 0 1 2 0 1 0 3 1 0 1 0 3 1 0 1 2 0 1 0 1 2 0 1 0 3 1 0 3 2 1 3 2 3 0 2 3 1 0 3 1 0 1 2 0 1 0 1 2 0 1 0 3 1 0
##### 1 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
Radu Mihail el 29 de Dic. de 2020
Thank you Stephen. This is simple and works perfectly

Iniciar sesión para comentar.

### Más respuestas (1)

Steven Lord el 29 de Dic. de 2020
You cannot define new operators for the double class, and I would strongly advise you not to try redefining multiplication for double.
You could define your own class and overload operators for that class. Or you could write a function that accepts two double inputs and call it instead of trying to use an operator.
##### 1 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
Radu Mihail el 29 de Dic. de 2020
I do not know how to write such a function.Would you kindly at least show me a type of function with double inputs to transform the vectors

Iniciar sesión para comentar.

### Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by