2014-09-13 142 views
0

我在创建的网格上执行缩放操作。但是这些尺寸似乎不适合网格的缩放。任何想法如何做到这一点? 代码:错误:缩放时内部矩阵的维度必须一致

% plot grid 
[X,Y] = meshgrid(-1:0.1:5, 0:0.1:1); 
X = X(:); 
Y = Y(:); 
plot(X,Y,'b.'); 
xlabel('X'); 
ylabel('Y'); 
sx = 0.75; 
sy = 0.6; 
Tscale = [sx 0 0; 
      0 sy 0; 
      0 0 1]; 
Scale_val=Tscale*[X Y].'; 
X_Scale=Scale_val(1,:); 
Y_Scale=Scale_val(2,:); 
figure, plot(X_Scale, Y_Scale); 

错误:

Error using * 
Inner matrix dimensions must agree. 
Error in: Scale_val=Tscale*[X Y].'; 
+0

你试图使用矩阵乘法实现什么样的缩放比例?什么是预期的输出? – Daniel 2014-09-13 16:27:17

+0

我正在尝试使用上面创建的网格执行空间转换。 – James 2014-09-13 16:29:59

+2

您不能用[2xn]矩阵乘[3x3]矩阵。只需使用'Tscale = [sx 0; 0 sy];'和你的代码将运行。 – Hoki 2014-09-13 17:05:03

回答

0

Scale_val=Tscale*[X Y].';

你做2次失误,我认为。 首先,您的输入坐标是2D且只有X和Y,但您正在尝试进行3D转换。其次,矩阵乘法格式不正确。这是我认为你正在尝试做的事

Tscale = [sx 0 0; 
      0 sy 0; 
      0 0 1]; 
Scale_val=Tscale*[X'; Y'; zeros(1,length(X))]; 
X_Scale=Scale_val(1,:); 
Y_Scale=Scale_val(2,:); 
figure, plot(X_Scale, Y_Scale,'*');