How do you subtract 1st dim all values in a 3D matrix with 1st dim all values of another 3D matrix?

3 ビュー (過去 30 日間)
I have two 3D matrices that are the same.
size(A) = [10 100 50]
size(B) = [10 100 50]
I want to subtract along every value in the 1st dim of A with every value in 1st dim of B with no for loops so using bsxfun. I will also take the mean in the middle
I want to end up with 10x10x50. How do I do this?
So far, I just have
z = mean(bsxfun(@minus, A, B, 2)
which subtracts every matching data index in 1st dim so [1-1] [2-2] ... [10-10]
I'm left with a 10x1x50 matrix of zeros.
I want to do
[1-1] [1-2] ... [1-10]
[2-1] ...
...
[10-1] [10-2] ... [10-10]
I can do this and I get the 10x10x50 matrix I want:
for i = 1:10
for j = 1:10
z = mean(bsxfun(@minus, A(i), B(j), 2)
end
end
Is this possible without for loops?

回答 (1 件)

AKHILA GOUDA
AKHILA GOUDA 2020 年 4 月 14 日
If I understand your question then you simple go through matrix element wise operation
A=rand(10,100,50);
B=rand(10,100,50);
C=A(:,1:10,:)-B(:,1:10,:);
size(C)
  1 件のコメント
Ryan Thackston
Ryan Thackston 2020 年 4 月 14 日
編集済み: Ryan Thackston 2020 年 4 月 14 日
No that's not it, sorry I fixed some of the wording in my statement. I want to use all data from the 2nd dim before I take the mean.
I want to subtract by each data point in the 1st Dim for A & B

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

カテゴリ

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

製品


リリース

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by