我正在尝试使用MATLAB代码创建一个贝塞尔曲面。为此,我必须以[[x1 y1] [x2 y2] [x3 y3]; [x4 y4] [x5 y5] [x6 y6]]的形式输入坐标。我已经尝试使用单元阵列,但在使用单元阵列时,不可能使用其他矩阵或数组进行算术运算。请帮忙 例如:
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 :(得分: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)
答案 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]