フィルターのクリア

Storage elements from matrix in other one, with indexing.

2 ビュー (過去 30 日間)
Isai Fernandez
Isai Fernandez 2021 年 5 月 10 日
コメント済み: KSSV 2021 年 5 月 10 日
I want to storage information from one matrix to another. In this example, from A matrix I have to extract to storage in B matrix. The solution should be:
B = [6 4
6 8]
I tried so hard, I don't get it.
Please help me.
A = [
8 3 0 2
9 6 1 4
10 6 2 1
1 6 2 8
];
a=2;
b=4;
B = zeros(2)
m=1
while m<=2
k= 1
while k<=2
i=1
while i<=4
if i==a
n1 = i
if n1<=2
j = 1
while j<=4
if j==b
n2=j
if n2<=2
B(m,k) = B(m,k)+A(n1,n2)
%B(m,k) = B(m,k)+A(n1,n2)
end
end
j = j+1
end
end
end
i = i+1
end
k = k+1
end
m=m+1
end
  2 件のコメント
KSSV
KSSV 2021 年 5 月 10 日
What output you expect?
Isai Fernandez
Isai Fernandez 2021 年 5 月 10 日
B matrix with elements from A with index a and b.

サインインしてコメントする。

採用された回答

KSSV
KSSV 2021 年 5 月 10 日
A = [8 3 0 2
9 6 1 4
10 6 2 1
1 6 2 8
];
a=2;
b=4;
[X,Y] = meshgrid([a b],[a b]) ;
id = sub2ind(size(A),Y,X) ;
B = A(id) ;
B
B = 2×2
6 4 6 8
  3 件のコメント
KSSV
KSSV 2021 年 5 月 10 日
A = [8 3 0 2
9 6 1 4
10 6 2 1
1 6 2 8
];
a=2;
b=4;
[X,Y] = meshgrid([a b],[a b]) ;
[m,n] = size(X) ;
B = zeros(m,n) ;
for i = 1:m
for j = 1:n
B(i,j) = A(Y(i,j),X(i,j)) ;
end
end
Loop will be slower....the solution shown first will be fast.
KSSV
KSSV 2021 年 5 月 10 日
The answer is good.... You use that answer.

サインインしてコメントする。

その他の回答 (1 件)

Stephen23
Stephen23 2021 年 5 月 10 日
The MATLAB approach:
A = [8,3,0,2;9,6,1,4;10,6,2,1;1,6,2,8]
A = 4×4
8 3 0 2 9 6 1 4 10 6 2 1 1 6 2 8
v = [2,4];
out = A(v,v)
out = 2×2
6 4 6 8
  2 件のコメント
Isai Fernandez
Isai Fernandez 2021 年 5 月 10 日
Wow, I have to figure out to implement this short code.
KSSV
KSSV 2021 年 5 月 10 日
I missed the common sense....

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by