matlab程序问题,很简单的,但是出错,求助!
假设R是radon变换后的频谱图,角度是0到90度,xp是y轴的值ma=max(xp);fori=1:90ifR(ma,i)==mamyAngle=i;endenddis...
假设R是radon变换后的频谱图,角度是0到90度,xp是y轴的值
ma = max(xp);
for i=1:90
if R(ma,i)==ma
myAngle=i;
end
end
disp(['angle=',num2str(myAngle)]);
我的意思是先求出y轴上的最大值,然后看这个最大值在x轴上的位置,赋给myAngle。但是求出的结果总是0,不明白了
我看过workspace,然后ma是214,
而且ma是y轴上的最大值,那么它必然在R(ma,:)里啊。
在R(ma,i)里,ma是作为行坐标,右边的ma是作为最大值。
觉得没什么问题啊。。。
这个radon变换是用matlab里的函数做的,结果应该没问题,它是一个429*91的矩阵,
而且y轴是连续的,这是一个坐标图,为什么ma不可以作为行坐标呢?
哈哈,终于出来了。结果是
angle=40
k=429
角度一点不差
太感谢了! 不过还是不明白,y轴式连续的,而且值和轴上的坐标应该是一对一的,为什么不可能了呢
不管了额 展开
ma = max(xp);
for i=1:90
if R(ma,i)==ma
myAngle=i;
end
end
disp(['angle=',num2str(myAngle)]);
我的意思是先求出y轴上的最大值,然后看这个最大值在x轴上的位置,赋给myAngle。但是求出的结果总是0,不明白了
我看过workspace,然后ma是214,
而且ma是y轴上的最大值,那么它必然在R(ma,:)里啊。
在R(ma,i)里,ma是作为行坐标,右边的ma是作为最大值。
觉得没什么问题啊。。。
这个radon变换是用matlab里的函数做的,结果应该没问题,它是一个429*91的矩阵,
而且y轴是连续的,这是一个坐标图,为什么ma不可以作为行坐标呢?
哈哈,终于出来了。结果是
angle=40
k=429
角度一点不差
太感谢了! 不过还是不明白,y轴式连续的,而且值和轴上的坐标应该是一对一的,为什么不可能了呢
不管了额 展开
1个回答
展开全部
if R(ma,i)==ma这句里面ma是否应该换成点到原点的距离?
总之你这句看起来很怪,为0估计还是你R(ma,:)里头没有等于ma的值,对着workspace再检查下这句
1"一个平面内沿不同的直线(直线与原点的距离为d,方向角为alfa)对f(x,y)做线积分,得到的像F(d,alfa)就是函数f的Radon变换" 好像你的R和公式不太一样。
2 max()返回的ma是y轴最大值,但是不是最大值所在的行数啊,不能做为行坐标吧,这个点鸡和蛋的意思。不如你再弄个X轴的循环先找找看有没有ma值
按你的意思ma=max(xp);返回的ma值既为最大值的所在的行坐标,同时又为最大值?这不可能。。或者你用find函数:k=find(xp==ma);返回的k才是最大值所在的行坐标
总之你这句看起来很怪,为0估计还是你R(ma,:)里头没有等于ma的值,对着workspace再检查下这句
1"一个平面内沿不同的直线(直线与原点的距离为d,方向角为alfa)对f(x,y)做线积分,得到的像F(d,alfa)就是函数f的Radon变换" 好像你的R和公式不太一样。
2 max()返回的ma是y轴最大值,但是不是最大值所在的行数啊,不能做为行坐标吧,这个点鸡和蛋的意思。不如你再弄个X轴的循环先找找看有没有ma值
按你的意思ma=max(xp);返回的ma值既为最大值的所在的行坐标,同时又为最大值?这不可能。。或者你用find函数:k=find(xp==ma);返回的k才是最大值所在的行坐标
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询