matlab绘图的网格划分
我有两种不同的时间函数matlab绘图的网格划分,matlab,signal-processing,matlab-figure,Matlab,Signal Processing,Matlab Figure,我有两种不同的时间函数x(t)和y(t)。我想在Matlab中绘制x(t)vsy(t)。该图需要划分为一个40x40网格,从每个方向的信号最小值和最大值开始延伸。然后,我需要计算在绘图中占用的网格框的数量。请提供一种在Matlab中实现此功能的方便方法 我尝试了以下代码(忽略轴的上限和下限): 据我所知,代码只将绘图划分为网格。如何计算占用的网格数 参考:我基本上需要实现本文中的算法: 听起来您想创建一个40x40矩阵,然后使用Bresenham线条绘制算法连接该矩阵中x(t)/y(t)对应的每
x(t)
和y(t)
。我想在Matlab中绘制x(t)
vsy(t)
。该图需要划分为一个40x40
网格,从每个方向的信号最小值和最大值开始延伸。然后,我需要计算在绘图中占用的网格框的数量。请提供一种在Matlab中实现此功能的方便方法
我尝试了以下代码(忽略轴的上限和下限):
据我所知,代码只将绘图划分为网格。如何计算占用的网格数
参考:我基本上需要实现本文中的算法:
听起来您想创建一个40x40矩阵,然后使用Bresenham线条绘制算法连接该矩阵中x(t)/y(t)对应的每个点(经过适当缩放)
然后,您可以使用
nnz
来计算矩阵中非零元素的数量。通过将信号量化为40个级别,然后将其与移位区域进行比较,我获得了一个比Dave Durbin提到的解决方案简单得多的解决方案。随附代码以供参考:
function TD=TimeDelay(val,fs)
n=40;
jump=( max(val) + abs(min(val)))/40;
level=zeros(n,1);
level(1)=min(val) + jump;
for i=2:n
level(i)=level(i-1)+jump;
end
level(n)=level(n)+1;
ScaledECG=zeros(size(val));
ScaledECG(val <= level(1))=1;
for j=2:n
ScaledECG( val<=level(j) & val>level(j-1))=j;
end
tau=fs*.5;
N=zeros(n,n);
for k=tau+1:1:length(val)
N(ScaledECG(k-tau),ScaledECG(k))=N(ScaledECG(k-tau),ScaledECG(k)) + 1;
end
N(N>5)=0;
N(N<=5)=1;
TD=sum(sum(N));
函数TD=时间延迟(val,fs)
n=40;
跳跃=(最大值)+绝对值(最小值))/40;
电平=零(n,1);
级别(1)=最小(val)+跳跃;
对于i=2:n
水平(i)=水平(i-1)+跳跃;
结束
级别(n)=级别(n)+1;
ScaledECG=零(大小(val));
ScaledECG(val 5)=0;
N(我对这个问题做了一点修改。你能帮忙吗?事实上,显示的代码只画了一个网格…你有没有尝试过任何方法来计算占用的单元格?如果你需要高质量的帮助,请提供示例数据、预期的输入/输出并展示你的努力。另外,请查看和
function TD=TimeDelay(val,fs)
n=40;
jump=( max(val) + abs(min(val)))/40;
level=zeros(n,1);
level(1)=min(val) + jump;
for i=2:n
level(i)=level(i-1)+jump;
end
level(n)=level(n)+1;
ScaledECG=zeros(size(val));
ScaledECG(val <= level(1))=1;
for j=2:n
ScaledECG( val<=level(j) & val>level(j-1))=j;
end
tau=fs*.5;
N=zeros(n,n);
for k=tau+1:1:length(val)
N(ScaledECG(k-tau),ScaledECG(k))=N(ScaledECG(k-tau),ScaledECG(k)) + 1;
end
N(N>5)=0;
N(N<=5)=1;
TD=sum(sum(N));