2017-04-10 126 views
0

我想用MATLAB代码创建一个贝塞尔曲面。为此,我必须以[[x1 y1] [x2 y2] [x3 y3]; [x4 y4] [x5 y5] [x6 y6]]的形式输入坐标。我尝试过使用单元格数组,但使用单元格数组时不可能使用其他矩阵或数组的算术运算。请帮助 例如:如何在矩阵内输入x,y,z坐标作为单个元素?

C=[[2 3] [3 4] [4 5] [5 6];[2 5] [5 2] [7 8] [8 9]]; 
A=C(1,3); 
ans=[4 5] 

而且

C=[[2 3] [3 4] [4 5] [5 6];[2 5] [5 2] [7 8] [8 9]]; 
D=[1 2;2 1;3 1;2 3]; 
E=C*D 
ans=[[30 38] [26 33];[49 51] [40 47]] 
+0

你需要作出更清楚,你是什么具体问题?发布示例代码和期望的结果。 – Wolfie

+0

我已经添加了一个示例代码 – Rldtta242

回答

0

你可以尝试使用cat(3,..)

C = cat(3,[[2 3] ;[3 4] ;[4 5]; [5 6]],[[2 5]; [5 2] ;[7 8] ;[8 9]]); 
A = C(3,:,1) 
0

你可以使用一个3D矩阵,与第二 “层” 是你的第二个坐标对,或者干脆使用2个矩阵!使用

你的例子:

C1 = [2 3 4 5; 2 5 7 8]; 
C2 = [3 4 5 6; 5 2 8 9]; 
D = [1 2; 2 1; 3 1; 2 3]; 
E1 = C1*D; E2 = C2*D; 

在3D矩阵:

% Make 3D matrix of same size as C1 but 2 layers 
C = zeros([size(C1), 2]); 
C(:,:,1) = C1; C(:,:,2) = C2; 
E = cat(3, C(:,:,1)*D, C(:,:,2)*D); 
% ans is a 3D matrix, with the 2 layers representing the pairs in your example. 

索引的3D矩阵,就像你想要的东西:

C13 = reshape(C(1,3,:),1,2) % C13 = [4, 5] 
% or 
C13 = squeeze(C(1,3,:))' % C13 = [4, 5] 
+0

我已经尝试使用这种方法,它的工作。感谢您的建议和帮助。 – Rldtta242

+0

然后请点击左边的勾号将此答案标记为已接受:) – Wolfie

相关问题