【问题标题】:Multiply coefficients into a matrix after meshgrid-ed in matlab在matlab中网格化后将系数乘入矩阵
【发布时间】:2017-03-10 05:42:43
【问题描述】:

我有一个A=[60x60] 的矩阵和两个系数a,b。由于矩阵Aa,b 移动了,如何将系数乘以矩阵A 以便得到A_moved?有什么功能可以做到吗?

这是实现的部分matlab代码:

A=rand(60); %where it's in 2D, A(k1,k2)
a=0.5; b=0.8;
[m, n]=size(A);
[M,N] = meshgrid(1:m,1:n);
X = [M(:), N(:)];
A_moved=A(:)(X)*[a b] %I know this is not valid but you get the idea

换句话说A_moved是由A_moved=a*k1+b*k2计算的。

这行代码A_moved=A(:)(X)*[a b]代表我的想法,a,b乘回原来的A,因为X代表k1k2的对应坐标。第一列代表k1,第二列代表k2。因此它变成了A_moved=a*k1+b*k2。但这无论如何都无法吸引我。

最后A-moved是一个60x60矩阵,对应的乘以系数a,b。为了更清楚,A 是图像的相位。 a,b 移动了它的阶段。

感谢任何帮助。谢谢!

参考论文:Here

编辑:

按照 Noel 的建议,以便更好地理解。

A=[2 3;5 7]a=1.5b=2.5

因为A 近似为a*k1+b*k2 因此, A_moved=[1.5*k1_1+2.5k2_1 1.5*k1_2+2.5k2_2; 1.5*k1_2+2.5k2_1 1.5*k1_2+2.5k2_2];

其中k1k2,如果我理解正确的话是原始A 矩阵的坐标,如上面X 中所定义。

【问题讨论】:

  • 我不清楚“按系数移动”是什么意思。您能否举一个 A=[4x4] 的小例子来说明您想要实现什么?
  • 嗨,我刚刚编辑了问题以使其更清晰。我不能给你A_moved 的最终或可比较的值,因为我一直停留在代码的最后一行。但是添加的描述应该解释得更清楚。
  • 我的意思是,你能不能用手而不是代码来做一个简单的小例子来说明你想要执行哪些操作。因为我仍然不清楚你的目标是什么
  • 我已附上此代码实现中的参考论文。我真的走到了这条路的尽头,这就是我附上论文的原因。我很抱歉!也许论文中描述的操作比我在这里解释的更清楚。你可以看看方程(14)。它应该解释。
  • 您的链接错误,返回此页面

标签: matlab matrix


【解决方案1】:

在聊天中我们发现您的问题与矩阵代数有关

您想要在A_moved 中获得的是x 坐标乘以常数a 加上y 坐标乘以常数b

你在MN中已经有了这个坐标,所以你可以获取A_moved作为

A_moved = (a*M) + (b*N);

它将保持与A相同的形状

【讨论】:

    猜你喜欢
    • 2017-09-23
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多