Filter löschen
Filter löschen

How to draw a line on a logical matrix?

3 Ansichten (letzte 30 Tage)
John Wray
John Wray am 19 Mai 2016
Bearbeitet: Andrei Bobrov am 19 Mai 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]

Antworten (1)

Andrei Bobrov
Andrei Bobrov am 19 Mai 2016
Bearbeitet: Andrei Bobrov am 19 Mai 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 Kommentar
John Wray
John Wray am 19 Mai 2016
Hi,
thanks for your answer, I mean not to create a diag matrix, the two points can be any value,.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Elementary Math finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by