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.

 採用された回答

Andrei Bobrov
Andrei Bobrov 2011 年 6 月 21 日

1 投票

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 件のコメント

Hassan
Hassan 2011 年 6 月 21 日
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 2011 年 6 月 21 日
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 2011 年 6 月 21 日
Present the data (small part) to which the code is not working
Hassan
Hassan 2011 年 6 月 21 日
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 2011 年 6 月 21 日
in dplt variable i have 323*2cell.
Andrei Bobrov
Andrei Bobrov 2011 年 6 月 21 日
create three matrixs: 1. m1; 2. value; 3. class;
Hassan
Hassan 2011 年 6 月 22 日
Sorry but I dont understand it.
Hassan
Hassan 2011 年 6 月 22 日
I got the following error:
??? Error using ==> horzcat
CAT arguments dimensions are not
consistent.
Andrei Bobrov
Andrei Bobrov 2011 年 6 月 22 日
Sorry! It's my typo! Correcting in 'k = [...'
Hassan
Hassan 2011 年 6 月 23 日
thanks a lot Andrei.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeLine Plots についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by