我试图写一个函数,它以笛卡尔坐标系中的x和y值作为输入,并输出极坐标和三角坐标形式。我希望输出包含指数和正弦/余弦,而不是实际值。例如,如果笛卡尔函数是z=1i,我希望函数输出z=sqrt(2)e^(ipi/4)和z=sqrt(2)(cos(pi/4)Isin(pi/4)。我该怎么做?
函数坐标(x, y)
r=sqrt(x.^2 y.^2);
θ=atan(y./x);
Polarcoord=rexp(theta)
=r*(cos(θ)i*sin(θ))
结束
这为我提供了以下输出:
polarcoord公司=
1.0000 1.0000i
trigcoord公司=
1.0000 1.0000i
谢啦
欢迎使用SO!您正在使用函数(sqrt(x)
计算x的实际平方根,exp(x)
指数,...所以这就是为什么你得到实际值,而不是公式表达式。
因此,输出公式的一种可能方法是使用字符串打印函数而不调用它们。然后,您需要做的是计算您想要的sqrt()内的值和*pi的分数并将它们添加到字符串数组中。我们可以使用方括号[]
、函数num2string()
和运算符来将字符串添加到同一个字符串html" target="_blank">数组中:
function coordinates(x,y)
[num,dem] = rat(atan(y./x)/pi);
% rat converts theta to fraction
% divide by pi to extract pi from theta
root = ["sqrt(" + num2str(x^2+y^2) + ")"]; % i.e "sqrt(2)"
pi_value = ["(" + num2str(num) + "*pi/" + num2str(dem) + ")"];
% i.e "(1*pi/4)" o "(2*pi/5)"...
polarcoord = ["z = " + root + "e^(i" + pi_value]
trigcoord = ["z = " + root + "(cos" + pi_value + ")+i*sin" + pi_value]
end
示例:
coordinates(1,1)
输出:
polarcoord=“z=sqrt(2)e^(i(1*pi/4)”
trigcoord=“z=sqrt(2)(cos(1pi/4))isin(1*pi/4)”
为了计算分数,我们使用rat()
函数从atan(y./x)
的双输出中获取分子和分母,并除以pi以从theta值中提取其值(我们已经在字符串中表示pi)。
编辑:我决定把这个问题分成两部分,因为它实际上是两个问题:1。如何在MATLAB中绘制极曲面图(本问题)和2。如何将拟合极坐标数据点放入粗略(非极坐标)矩阵 我有一个包含某些灰色值(介于0和1之间的值)的矩阵。这些点存储在一个矩形矩阵中,但实际上数据点是通过旋转探测器获得的。这意味着我实际上有极坐标(我知道起始矩阵中每个像素的极坐标)。 我想制作一个数据点的极线图。我有下面的例子。 因为MATLA
我试图计算一种有效的方法,将笛卡尔坐标系中的图像转换为极坐标表示。我知道ImToPolar等一些功能正在实现这一点,它工作得很好,但对于大图像来说需要相当长的时间,尤其是当它们需要来回处理时。 这是我的输入图像: 然后我使用以0为中心的笛卡尔网格和函数生成一个极网格。最后,我使用绘制我的图像。 这是我得到的: 这正是我需要的图像,它与ImToPolar相同,或者更好。 既然MATLAB知道如何计算
假设我必须生成20个随机坐标,20个行号和20个列号。 有没有办法显示我存储在数组中的所有数字?尝试使用偏移,但没有成功。
我正在尝试将极坐标的图像转换为笛卡尔坐标。 将图像转换为极坐标的示例显式执行-想要一个光滑的矩阵方法 我原以为使用上述方法是小菜一碟,但事实并非如此!!如果有人发现我的代码有错误,请告诉我! 我发现非常奇怪的是,当我改变phi时,它会做出根本性的改变,而不是以我期望的方式! 干杯
我试图将图像从极坐标转换为笛卡尔坐标,但在应用公式后,我得到了浮点坐标(r和teta),我不知道如何使用x和y的浮点来表示空间中的点。可能有一种方法可以将它们转换为整数,并仍然保留分布,但我不知道如何。我知道OpenCV中有像warpPolar这样的函数,但我想自己实现它。任何想法都会有帮助:) 这是我的代码:
我在将图像转换为极坐标时遇到问题。在Photoshop中很容易:)所以这对我来说是一个新领域。 我有以下图片: 结果应该是这样的: 我在这里看了一下,了解了一些基本知识,但仍然对圆的平方有点困惑: 我几乎不知道如何重新绘制图像。还有一个警告:由于管理限制,我想避免使用像Numpy这样的外部库。