2 dudas de novato en MatLab

Hola:

Tengo dos dudas muy basicas de matrices en matlab, pero que no doy con la solucion, a ver si me podeis ayudar:

1- Crear una matriz de tamaño 3x3 con todos los valores 3 y la diagonal principal toda con valores 2.

2- Matlab no me deja introducir fracciones en matrices, ¿alguna solucion?

PD. La primera matriz no se debe crear elemnto a elemento, que a eso si que llego, jejeje.Hay que utilizar matrices especiales. En la primera llego a hacer diag([2;2;2]), pero todos los demas numeros los completa con ceros y yo querria que fuesen 3.


Muchas gracias y seguire investigando a ver si lo resuelvo antes.
Hola!!

ahora mismo no recuerdo la sintaxis correcta, ya que de un año a otro se olvida xD, pero vamos, siempre puedes consultar la ayuda del matlab para comprobar como hay que escribir la orden de forma adecuada.

ahora al grano, existe una función llamada ones, que te devuelve un vector o matriz con todo unos, asi que lo que tienes que hacer luego es multiplicar esa matriz por tres y luego le aplicas diag y te cambiará la diagonal tambíen.

y sobre lo de las fracciones, no se porque te pasa eso, porque debería dejarte, comprueba en las opciones el formato en que se te están mostrando los datos...

Un saludo !
Muchas gracias por responder [oki]

En la primera matriz llego a hacer la de 3x3 con todo 3, pero no se como usar diag para cambiarle la diagonal.
Leyendo el help del matlab he hecho M = spdiags([2;2;2],0,M) y me aparece la matriz que busco pero en una lista por elementos.

En la segunda decir que al hacer diag(a) siendo a=[1/2;1/2;1/2;] me sale el error "??? Subscript indices must either be real positive integers or logicals."

Vaya lio, Gracias!!
jomofer escribió:1- Crear una matriz de tamaño 3x3 con todos los valores 3 y la diagonal principal toda con valores 2


ones(3) - eye (2)


lo otro no me lo he planteado nunca xD, a ver si lo intento [360º]
Por cierto, igual este pdf te ayuda: Aprenda Matlab como si estuviera en primero. (2,4 megas ) Viene todo lo básico de Matlab.
Hombre, lo de las fracciones, es que MATLAB no tiene un tipo de dato 'fracción', me extrañaría que una sentencia como:

a=1/2

pues podría darte que a= 1 / 2, en vez de a = 0.5000.

Claro está que si pones a(3,2)=1/2 te sale la matriz con el elemento (3,2) como 0.5000.

Lo otro es como dijo Teniente Dan, usando ones y eye.
si no me equivoco mucho, matlab no admite fracciones en las matrices


por lo demas, la forma mas comoda es como parecido a como te han dicho: 3*ones(3,3) - eye(3)

PD: quiza sea eye(3,3), no me acuerdo del todo bien y ahora mismo no lo tengo instalado sorry
Lo dicho antes, gracias y soys unos cracks, todo resuelto.

la primera la he resuelto asi: (ones(3)).*3 - eye(3)

la segunda: eye(3)./2 %como no acepta fracciones, pues se divide entre dos cada elemento
campa estas en todas jopelin XD
8 respuestas