-1

私はマトリックスを持っています

A=magic(4)*10

と行列

B=[6 6 2 6;  1 1 2 1; 7 7 2 1; 3 3 -1 3 ]

Aの値に応じて の値を取得したいB。例えば:

A=
160 20  30  130
50  110 100 80
90  70  60  120
40  140 150 10

B=
6   6   2   6
6   6   2   2
2   6   2   6
6   2   -1  2

A(1,1)(value=160)から始めたいと思います。次に、 の対応する値が の場合BB(1,1) = 6右にある要素を取得したいA(1,2)、および の場合B(1,1) = 2、下にある値を取得したいA(2,1)。最後に、値が -1 の場合、続行したくありません。最後に、次のような結果を得たいと思います。

result=
160
20
30
100
60

誰でも私を助けてもらえますか?

4

1 に答える 1

9

次のコードを試してください。

% Inizialize matices
A=magic(4)*10;
B=[6 6 2 6;  1 1 2 1; 7 7 2 1; 3 3 -1 3 ];

% Inizialize internal variables
contin=1;
row=1;
column=1;
result=[];

while contin==1
    %append value
    result=[result A(row, column)];
    if B(row, column)==6
        column=column+1; %go to the right
    elseif B(row, column)==2
        row=row+1; %go down
    elseif B(row, column)==-1
        contin=0; %break
        result(end)=[]; %delete last value 
    end
end

result
于 2013-01-13T22:19:33.117 に答える