123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- clear all;
- %%
- clc
- % Leemos el archivo de Matlab conteniendo las neuronas
- Num_File = 6;
- load(['Neurona_Matlab_', num2str(Num_File), '.mat']);
- %% Ploteamos
- clc
- colores = {'r', 'b', 'm', 'k', 'g'};
- figure;
- hold on;
- for i = 1:length(AXON_Cell)
-
- Puntos_Axon = AXON_Cell{1, i};
- plot3( Puntos_Axon(:, 1), Puntos_Axon(:, 2), Puntos_Axon(:, 3), '-', 'color', colores{mod(i, 5)+1}, 'markersize', 10, 'linewidth', 1.5 );
- xlabel('X');
- ylabel('Y');
- zlabel('Z');
- % zlim([150 200]);
- % view([-96, -90]);
- % axis equal
- end
- %% Generamos cortes de en el plano xy
- clc
- % Preparamos la muestra en Z para que en ella quepa exactamente la rejilla de ancho "Grosor_C"
- Grosor_Corte = 50; % Espesor del corte = 50 micras
- sobra_Z = Grosor_Corte - mod( max( AXON(:, 4) ) - min( AXON(:, 4) ), Grosor_Corte );
- Max_Z = max( AXON(:, 4) ) + sobra_Z/2; % Coordenada máxima de z
- min_Z = min( AXON(:, 4) ) - sobra_Z/2; % Coordenada mínima de z
- Cortes = min_Z:Grosor_Corte:Max_Z - Grosor_Corte;
- % Preparamos la muestra en Y para que en ella quepa exactamente la rejilla de ancho "Rejilla_Y"
- Rejilla_Y = 100;
- sobra_Y = Rejilla_Y - mod( max( AXON(:, 3) ) - min( AXON(:, 3) ), Rejilla_Y );
- Max_Y = max( AXON(:, 3) ) + sobra_Y/2; % Coordenada máxima de z
- min_Y = min( AXON(:, 3) ) - sobra_Y/2; % Coordenada mínima de z
- Filas_Rejilla = min_Y:Rejilla_Y:Max_Y - Rejilla_Y;
- % Preparamos la muestra en X para que en ella quepa exactamente la rejilla de ancho "Rejilla_X":
- Rejilla_X = 100;
- sobra_X = Rejilla_X - mod( max( AXON(:, 2) ) - min( AXON(:, 2) ), Rejilla_X );
- Max_X = max( AXON(:, 2) ) + sobra_X/2; % Coordenada máxima de z
- min_X = min( AXON(:, 2) ) - sobra_X/2; % Coordenada mínima de z
- Columnas_Rejilla = min_X:Rejilla_X:Max_X - Rejilla_X;
- tic
- % Separamos la muestra en cortes en XY y en la rejilla:
- Cortes_XY_Axon = cell( length( Cortes ), 1 );
- for i = 1:length( Cortes ) % Recorremos los cortes
-
- dummy_CORTE = {};
- dummy_RAMA_en_REJILLA = cell( 1, length(AXON_Cell) );
- for j = 1:length(AXON_Cell)
- dummy_2 = AXON_Cell{1, j}; % Puntos en esa rama del axón y en ese corte
- ind_Corte = dummy_2(:, 3) > Cortes(i) & dummy_2(:, 3) < Cortes(i) + Grosor_Corte;
-
- if sum(ind_Corte) > 0 % En este corte hay puntos de esa rama
-
- dummy_REJILLA = cell( length(Filas_Rejilla), length(Columnas_Rejilla) ); % Esta celda tendrá NxM, con N y M el númeor de filas y columnas respect. de la rejilla en que se divide cada corte
- % Vemos en qué celda de la rejilla están:
- for filas = 1:length(Filas_Rejilla)
- ind_Rejilla_Y = dummy_2(:, 2) > Filas_Rejilla( filas ) & dummy_2(:, 2) < Filas_Rejilla( filas ) + Rejilla_Y;
-
- for columnas = 1:length( Columnas_Rejilla )
- ind_Rejilla_X = dummy_2(:, 1) > Columnas_Rejilla( columnas ) & dummy_2(:, 1) < Columnas_Rejilla( columnas ) + Rejilla_X;
-
- Rama_en_Rejilla = dummy_2( ind_Corte & ind_Rejilla_X & ind_Rejilla_Y, : ); % Puntos de esa rama que están en esa celda de la rejilla
- dummy_REJILLA{filas, columnas} = Rama_en_Rejilla;
- end
-
- end
- dummy_RAMA_en_REJILLA{1, j} = dummy_REJILLA; % Cada celda contiene NxM celdas, codificando la presencia de cada rama correspondiente en la rejilla. Las que no tienen NxM es que están vacías porque sus ramas no están en ese corte
-
- end
-
- end
- Cortes_XY_Axon{i, 1} = dummy_RAMA_en_REJILLA;
- disp(i)
- end
- toc
- %% Salvamos los datos:
- save(['Cortes_Muestra_Axon_', num2str(Num_File), '.mat']);
- %% Comprobamos que está bien ploteando:
- clc
- i_x = 16; % Columna de la rejilla
- i_y = 14; % Fila de la rejilla
- i_z = 14; % Corte
- colores = {'r', 'b', 'm', 'k', 'g'};
- figure('color', 'w', 'position', [50, 200, 1300, 500]);
- subplot(1, 2, 1);
- hold on;
- for i = 1:length(AXON_Cell)
-
- Puntos_Axon = AXON_Cell{1, i};
- plot3( Puntos_Axon(:, 1), Puntos_Axon(:, 2), Puntos_Axon(:, 3), '-o', 'color', colores{mod(i, 5)+1}, 'markersize', 7, 'linewidth', 1.5 );
-
- xlim([Columnas_Rejilla(i_x), Columnas_Rejilla(i_x) + Rejilla_X]);
- ylim([Filas_Rejilla(i_y), Filas_Rejilla(i_y) + Rejilla_Y]);
- zlim([Cortes(i_z), Cortes(i_z) + Grosor_Corte]);
- view([32, 20]);
- % axis equal
- end
- subplot(1, 2, 2);
- hold on
- for i = 1:length(Cortes_XY_Axon{i_z, 1})
-
- if ~isempty( Cortes_XY_Axon{i_z, 1}{1, i} )
-
- dummy = Cortes_XY_Axon{i_z, 1}{1, i};
- for i_fila = 1:size(dummy, 1)
-
- for i_columna = 1:size(dummy, 2)
- if ~isempty(dummy{i_fila, i_columna})
- Puntos_Axon = dummy{i_fila, i_columna};
- plot3( Puntos_Axon(:, 1), Puntos_Axon(:, 2), Puntos_Axon(:, 3), '-o', 'color', colores{mod(i, 5)+1}, 'markersize', 7, 'linewidth', 1.5 );
- end
- end
-
- end
-
- end
-
- xlim([Columnas_Rejilla(i_x), Columnas_Rejilla(i_x) + Rejilla_X]);
- ylim([Filas_Rejilla(i_y), Filas_Rejilla(i_y) + Rejilla_Y]);
- zlim([Cortes(i_z), Cortes(i_z) + Grosor_Corte]);
- view([32, 20]);
- % axis equal
- end
|