2014-09-13 74 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,'*'); 
相關問題