plot of differernt regions in a matrix

I have 2 matrixes with the same dimension(100,200). the structure of one the matrixes is something like as follows: class1{row=1:3 and j=4:7>>value=2} class2{row=1:3 and j=8:8>>value=3} class3{row=10:12 and j=150:160>>value=2} class4{row=80:90 and j=150:160>>value=3}
I want to make a plot of pixels in matrix2 which have a value 2 in matrix1 but show them as differnt classes. class 1 has 12 values and class 3 has 33 values. i want a plot which on X axis from 1 to 12 is shown as class 1 and from 13 to 13+33 as class3. I'm not sure if I asked my question clearly, but please let me know if it's not clear. I appereciate your help.

 Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 21 de Jun. de 2011
m1 = rand(100,200);
m2 = zeros(size(m1));
m2(1:3,4:7)=2;
m2(10:12,150:160)=2;
m2(1:3,8)=3;
m2(80:90,150:160)=3;
L = bwlabel(m2 == 2);
[r c v] = find(L);
wmtx = sortrows([r c v],3);
plot(1:size(wmtx,1),m1(sub2ind(size(m1),wmtx(:,1),wmtx(:,2))));
ADD on comment
pm1 = m1(sub2ind(size(m1),wmtx(:,1),wmtx(:,2)));
dplt = mat2cell([(1:size(wmtx,1))' pm1],...
arrayfun(@(i1)nnz(wmtx(:,3)==i1),1:max(wmtx(:,3))) ,ones(1,2));
plot(dplt{1,:},'r*-',dplt{2,:},'go-')
corrected 'plot(...'
n = size(wmtx,1);
k=reshape('ymcrgbwk+o*.xv^>--------',[],3);
dplt2 = [dplt mat2cell([repmat(k,fix(n/8),1);k(1:rem(n,8),:)],ones(n,1),3)]';
plot(dplt2{:})
COD of last correcting
L = bwlabel(m2 == 2);
[r c v] = find(L);
wmtx = sortrows([r c v],3);
pm1 = m1(sub2ind(size(m1),wmtx(:,1),wmtx(:,2)));
dplt = mat2cell([(1:size(wmtx,1))' pm1],...
arrayfun(@(i1)nnz(wmtx(:,3)==i1),1:max(wmtx(:,3))) ,ones(1,2));
n = size(dplt,1);
k=reshape('ymcrgbwk+o*.xv^>--------',[],3);
dplt2 = [dplt mat2cell([repmat(k,fix(n/8),1);k(1:rem(n,8),:)],ones(n,1),3)]';
plot(dplt2{:})

10 comentarios

Hassan
Hassan el 21 de Jun. de 2011
thanks a lot Andrei. It's the one I need. The only missing thing which is also important for me is if I can show differernt regions with differernt color in the plot. for example if the whole range of values on X-axis is 1 to 45 and say 1 to 5 is the first connected values and 6 to 20 is the second one, I can show each of them with a seperate color.
Hassan
Hassan el 21 de Jun. de 2011
the add on code works for the example u used but it not working for my data. I have more than 200 regions with value 2 in differernt part of image.
Andrei Bobrov
Andrei Bobrov el 21 de Jun. de 2011
Present the data (small part) to which the code is not working
Hassan
Hassan el 21 de Jun. de 2011
I'd like to but I dont know how to present the data. I dont think I can import the data here, can I?
Hassan
Hassan el 21 de Jun. de 2011
in dplt variable i have 323*2cell.
Andrei Bobrov
Andrei Bobrov el 21 de Jun. de 2011
create three matrixs: 1. m1; 2. value; 3. class;
Hassan
Hassan el 22 de Jun. de 2011
Sorry but I dont understand it.
Hassan
Hassan el 22 de Jun. de 2011
I got the following error:
??? Error using ==> horzcat
CAT arguments dimensions are not
consistent.
Andrei Bobrov
Andrei Bobrov el 22 de Jun. de 2011
Sorry! It's my typo! Correcting in 'k = [...'
Hassan
Hassan el 23 de Jun. de 2011
thanks a lot Andrei.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre 2-D and 3-D Plots en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 21 de Jun. de 2011

Community Treasure Hunt

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

Start Hunting!

Translated by