Clear Filters
Clear Filters

How to draw a line on a logical matrix?

3 views (last 30 days)
John Wray
John Wray on 19 May 2016
Edited: Andrei Bobrov on 19 May 2016
Hi,
Assume a blank matrix:
m=[0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0]
I want to draw a line between a=[1 1], b=[5 5], and returned m like this:
m = [1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1]

Answers (1)

Andrei Bobrov
Andrei Bobrov on 19 May 2016
Edited: Andrei Bobrov on 19 May 2016
diag(5)
or
z = zeros(6.,7);
a=[2 1];
b=[4 7];
xy = [a; b];
t = diff(xy);
t0 = t(:,1)./t(:,2);
y = @(x)(x - a(2))*t0 + a(1);
x1 = (1:size(z,2))';
y1 = round(y(x1));
z(size(z,1)*(x1 - 1) + y1) = 1
or use strel from Image Processing Toolbox
z = zeros(6.,7);
a=[2 1];
b=[4 7];
t = diff([a; b]);
S = strel('line',sqrt(sum(t.^2)),atand(t(1)/-t(2)));
  1 Comment
John Wray
John Wray on 19 May 2016
Hi,
thanks for your answer, I mean not to create a diag matrix, the two points can be any value,.

Sign in to comment.

Categories

Find more on Elementary Math in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!