首页 > 解决方案 > Matlab转置矩阵反转图

问题描述

我使用网格网格构建的两个矩阵作为基础绘制一些东西。

[U,V] = meshgrid(Y,X);

在一个函数中,我构建了另一对矩阵

[A,B] = function(input)

因此我绘制

plot((U((length(U)+1)/2,:)),A((length(U)+1)/2,:));
plot((V((length(U)+1)/2,:)),B((length(U)+1)/2,:));

如果 U 和 V 属于这种类型:

U= 1 2 3 4   V= 1 1 1 1
   1 2 3 4      2 2 2 2
   1 2 3 4      3 3 3 3
   ...          ...

我想修改 A 以获得相同的情节但具有U这样的转置含义

U= 1 1 1 1   V= 1 2 3 4
   2 2 2 2      1 2 3 4
   3 3 3 3      1 2 3 4
   ...          ...

意味着现在U沿行具有固定值并沿列更改,我希望沿列具有固定值并沿行更改,而数学上的方法是转置 U。

有没有另一种方法可以做到这一点,或者我怎样才能修改 A 以获得相同的情节?当然,转置 A 是行不通的。A是一个像四个输入参数(函数的输入)的总和一样的构建 A 让我们说随机值,但重要的是中心行和列大约为零,就像这样

A= -1.7 -1.6 ... 0 ... 1.6 1.7 
   -1.6 -1.5 ... 0 ... 1.5 1.6
   ...           0
     0    0      0      0    0
   ...
   1.6  1.5 ... 0 ... -1.5 -1.6
   1.7  1.6 ... 0 ... -1.6 -1.7

U 和 V 属于这种

转置 U 和 V 后得到相同的图是这样的,

U=U'; V=V'; 
plot((V((length(U)+1)/2,:)),A((length(U)+1)/2,:));
plot((U((length(U)+1)/2,:)),B((length(U)+1)/2,:));

但我不能使用它,因为之后我将 A 的值写入文件中。

标签: matlabmatrix

解决方案


目前还不清楚你想要什么。

您的矩阵 U 和 V 是网格网格。

U= 1 2 3 4   V= 1 1 1 1
   1 2 3 4      2 2 2 2
   1 2 3 4      3 3 3 3

你有矩阵 A 和 B 对应于这个矩阵 U 和 V。

例子:

A= -1.7 -1.6 -1.5 -1.4      B= -2.7 -2.6 -2.5 -2.4 
   -1.6 -1.5 -1.4 -1.3         -2.6 -2.5 -2.4 -2.3
   -1.5 -1.4 -1.3 -1.2         -2.5 -2.4 -2.3 -2.2

现在您要转置 U 和 V:

U= 1 1 1 1   V= 1 2 3 4
   2 2 2 2      1 2 3 4
   3 3 3 3      1 2 3 4

所以现在如果我们在矩阵中选择一个位置。例如 (1, 3) 将关联一个 U 值 (1) 一个 V 值 (3)、一个 A 值 (-1.5) 和一个 B 值 (-2.5)

如果您转置 U 和 V,则位置 (1,3) 将具有值 U,V,A,B = (3, 1, -1.5, -2.5)。如您所见,A 和 B 的值映射到 U 和 V 的不同值(基本上是因为您转置了 U 和 V)。

因此,转置 A 和 B 您将再次获得正确的映射。

编辑:

您基本上是在 X 轴上绘制 V,在 Y 轴上绘制 A。这基本上意味着 A 的每个元素都与 V 的一个元素相关联以形成一个二维坐标。

如果现在转置 V,X 元素的排列方式将有所不同,因此您必须重新排列 A 的元素,以便映射保持不变。

这意味着您需要对两个矩阵执行相同的操作以保持映射不变,因为您正在转置 V,因此您还需要转置 A。

我要求提供一个数字示例,您提供的示例不清楚。举例说明您目前拥有什么(矩阵+绘图)以及您想要实现什么(矩阵和绘图)。只需用一个小的 3x3 矩阵来做这个例子,我们就会看到你想要做什么。


推荐阅读