Generar números al azar de un conjunto?

En MATLAB, tengo un conjunto deP números. Me gustaría generar una matriz aleatoria de tamañoN de este conjunto

Por el bien de ejemplo, digamos que tengo el conjunto{1, 4}. Digamos que me gustaría generar una matriz de tamaño5 (p.ej.,[1 1 4 1 4])

Lo que hice es esto: generé la siguiente matriz usandorandi.

N = 5;
v = randi([1 4],[1 N]);

El problema es que obtuve una matriz aleatoria que contiene valores en1:4 y no en{1, 4}. Simplemente puedo hacer esto, pero necesito una mejor manera.

for i = 1:length(v)
    if v(i) ~= 1 || v(i) ~= 4
       v(i) = 1; % or v(i) = 4
    end
end

Creo que me estoy perdiendo una pista simple aquí.

Respuestas a la pregunta(2)

Su respuesta a la pregunta