arrays matlab cell

arrays - ¿Cómo usar las matrices de células en Matlab?



cell (2)

Soy un principiante en el uso de Matlab y encontré matrices de células, pero no estoy seguro de cómo usar la indexación.

He creado una matriz de celdas de 5 filas y 3 cols haciendo lo siguiente:

A = cell(5,3);

Ahora, ¿es posible pasar primero por la matriz de celdas por fila y luego comparar como un bucle for anidado para una matriz normal?

for i=1:5 for j=1:3 A{i,j} = {"random"} //random numbers/ string etc end end


Con las matrices de celdas tiene dos métodos de indexación, a saber, paréntesis (es decir (...) ) y llaves (es decir, {...} ).

Vamos a crear una matriz de celdas para usar como ejemplos:

A = {3, 9, ''a''; ''B'', [2,4], 0};

La indexación usando paranthesis devuelve una porción de la matriz de celdas COMO UN ARREGLO CELULAR . Por ejemplo

A(:,3)

devuelve una matriz de celdas 2 por 1

ans = ''a'' 0

La indexación con llaves devuelve el CONTENIDO de esa celda, por ejemplo

A{1,3}

devuelve un solo personaje

ans = a

También puede usar paréntesis para devolver una sola celda, pero seguirá siendo una celda . También puede usar llaves para devolver varias celdas, pero estas regresan como listas separadas por comas , que es un poco más avanzado.

Al asignar a una celda, se aplican conceptos muy similares. Si está asignando usando paréntesis, debe asignar una matriz de celdas del tamaño apropiado:

A(:,1) = {1,1}

si asigna un solo valor usando paréntesis, debe ponerlo en una celda (es decir, A(1) = 2 le dará un error, por lo que debe hacer A(1) = {2} ). Por lo tanto, es mejor usar llaves, ya que está afectando directamente el contenido de la celda. Entonces es correcto ir

A{1} = 2

esto es equivalente a A(1) = {2} . Tenga en cuenta que A {1} = {2}, que es lo que ha hecho, no dará un error, pero lo que sí hace es anidar una celda dentro de su celda que es poco probable lo que buscaba.

Por último, si tiene una matriz dentro de una de sus celdas, Matlab le permite indexar directamente en esa matriz de la siguiente manera:

A{2,2}(1) ans = 3


por ejemplo:

for i=1:5 for j=1:3 A{i,j} = rand(3) end end

debería funcionar perfectamente bien
simplemente omita el {} en el lado derecho de =