我有3个矩阵,
test_1=[1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15; 16 17 18];
test_2=[16 18 15; 6 5 8; 2 9 5; 11 19 21; 22 28 30; 14 16 19];
test_3=[11 9 7; 8 22 17; 27 31 30; 28 26 40; 66 57 36; 82 21 19];
我想将前两行的所有元素保存为
firstrow_test_1= test_1([1; 2],:);
firstrow_test_2= test_2([1; 2],:);
firstrow_test_3= test_3([1; 2],:);
这些矩阵将给出前两行test_1,test_2,test_3的所有元素的结果。 然后我想获取test_1,test_2和test_3的第3和第4行,并将元素保存在另一组metrices中。
secondrow_test_1= test_1([3; 4],:);
secondrow_test_2= test_2([3; 4],:);
secondrow_test_3= test_3([3; 4],:);
与其他人类似,我必须这样做,
thirdrow_test_1= test_1([5; 6],:);
thirdrow_test_2= test_2([5; 6],:);
thirdrow_test_3= test_3([5; 6],:);
如果我这样做,那么代码会很长。那么有什么方法可以用更短的方式编写代码吗?如果有可能的话,有人可以帮我在这种情况下使用循环吗?
感谢。
答案 0 :(得分:1)
这是MatLab(矩阵实验室)。您需要使用矩阵的多个维度来存储数据,而不是创建单独的变量,如果它们都具有相同的维度(如您的情况)。否则,如果它们的尺寸不相同,则可以使用单元阵列。
以下是一些可能对您有帮助的链接。
举个例子(看看使用nD矩阵可以轻松解决问题)
%// creating multidimensional matrix from those 2D matrix
A = cat(3,test_1, test_2, test_3); %// stacking each 2D slices in 3rd dimension
例如,
可以使用firstrow_test_1
访问A(1:2,:,1)
。
类似地,
可以使用firstrow_test_2
A(1:2,:,2)
依旧等等。我希望你有个主意。
在这里,我将2D切片创建为3D矩阵,就像将它们作为2D切片一样。但您应该能够直接创建3D矩阵,并且可以应用相同的过程。