matlab输入单行矩阵_matlab – 在矩阵上绘制一行

这篇博客介绍了如何在MATLAB中根据两点坐标(p1, p2)绘制一条线,将矩阵的某些元素设置为1。首先计算线的方程,然后将x和y坐标转换为矩阵索引,并设置相应的矩阵元素。通过示例展示了如何在一个10x10的矩阵上绘制线,并确保了正确处理不同维度的情况。" 103868932,1268428,程序员造轮子:从入门到精通的进阶之路,"['编程技巧', '学习方法', '开源社区', '职业发展', '程序员成长']
摘要由CSDN通过智能技术生成

我将两个端点表示为p1和p2,因为我打算将x和y用于其他东西.我还假设p1和p2的第一个坐标是x,第二个坐标是y.所以这是一个相当简单的方法:

>获得线y = ax b的等式.在MATLAB中,这可以通过以下方式完成:

x = p1(1):p2(1)

dx = p2(1) - p1(1);

dy = p2(2) - p1(2);

y = round((x - p1(1)) * dy / dx + p1(2));

>将x和y的值转换为矩阵中元素的索引,并将这些元素设置为1.

idx = sub2ind(size(m), y, x);

m(idx) = 1;

这是一个小的10×10矩阵的例子:

%// This is our initial conditon

m = zeros(10);

p1 = [1, 4];

p2 = [5, 7];

%// Ensure the new x-dimension has the largest displacement

[max_delta, ix] = max(abs(p2 - p1));

iy = length(p1) - ix + 1;

%// Draw a line from p1 to p2 on matrix m

x = p1(ix):p2(ix);

y = round((x - p1(ix)) * (p2(iy) - p1(iy)) / (p2(ix) - p1(ix)) + p1(iy));

m(sub2ind(size(m), y, x)) = 1;

m = shiftdim(m, ix > iy); %// Transpose result if necessary

结果是:

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 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0 0 0

0 0 1 1 0 0 0 0 0 0

0 0 0 0 1 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

0 0 0 0 0 0 0 0 0 0

更新:我修补了这个算法,当dy> dx通过将具有最大位移的维度视为x维度,然后在必要时转置结果.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值