Matlab 在这种情况下如何使用循环?

Matlab 在这种情况下如何使用循环?,matlab,matrix,matlab-guide,matlab-deployment,Matlab,Matrix,Matlab Guide,Matlab Deployment,我有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],:); fir

我有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],:);
这些矩阵将给出测试_1、测试_2、测试_3前两行的所有元素的结果。 然后我想取第3行和第4行的test_1、test_2和test_3,并将元素保存在另一组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],:);
如果我这样做,那么代码将非常长。那么有没有办法用更短的方式编写代码呢?如果可能的话,有人能帮我在这种情况下使用循环吗

  • 如果我们有50个矩阵,比如test_1,test_2,…,test_50,我们想在这种情况下做同样的事情,会怎么样?(在另一个矩阵中保存前2行,然后在另一个矩阵中保存下2行..以此类推)
  • 谢谢。

    这里是MatLab(矩阵实验室)。如果矩阵的维度相同,则需要使用矩阵的多个维度来存储数据,而不是创建单独的变量(如您的情况)。否则,如果它们的尺寸不相同,则可以使用单元格数组

    以下是一些可能对您有所帮助的链接

    以您的例子(看看使用nD矩阵解决问题有多容易)

    例如,
    firstrow\u test\u 1
    可通过使用
    A(1:2,:,1)
    访问

    同样地,
    使用
    A(1:2,:,2)

    等等。。我希望你有个主意


    在这里,我从2D切片创建了一个3D矩阵,就像您将它们作为2D切片一样。但是您应该能够直接创建3D矩阵,并且可以应用相同的过程。

    您确定确实需要这样做吗?为什么需要提取这两行?您是否需要将它们传递给期望输入格式的特定函数?是的,我相信我必须这样做。我目前正在研究一种指纹打印方法,其中我使用3个接收器和一个发射器,并且我也在考虑不同的发射方向。我从一组代码中进行分析,每次我从一个文件中获得每个点的3个接收器的所有RSSI值。所以我想用这个策略来区分这些值。有办法解决吗?
    %// creating multidimensional matrix from those 2D matrix
    A = cat(3,test_1, test_2, test_3);   %// stacking each 2D slices in 3rd dimension