how to vectorize squared function

1 回表示 (過去 30 日間)
Maximilian Dio
Maximilian Dio 2021 年 7 月 22 日
編集済み: Bruno Luong 2021 年 7 月 22 日
Hi I have a problem considering calculating a squared function of a grid
so I have 2 vectors X=rand(N,D) and Y=rand(M,D)
I want to generate a function that returs a matrix s.t.
for i = 1:N
for j = 1:M
r2(i,j) = (X(i,:)-Y(j,:))*L*(X(i,:)-Y(j,:))';
end
end
is there a way to vectorize this cleverly?
It needs to run in Simulink (code generation)

回答 (2 件)

KSSV
KSSV 2021 年 7 月 22 日
r2 = (X-Y).*L.*(X-Y)';

Bruno Luong
Bruno Luong 2021 年 7 月 22 日
編集済み: Bruno Luong 2021 年 7 月 22 日
X=rand(3,10);
Y=rand(4,10);
L=rand(10);
N=size(X,1);
M=size(Y,1);
XX=reshape(X,N,1,[]);
YY=reshape(Y,1,M,[]);
YX=reshape(XX-YY,N*M,[]);
r2=reshape(sum(YX.'.*(L*YX')),[N M])
r2 = 3×4
-0.0902 0.5037 1.1533 1.2152 0.2232 0.4179 1.9723 1.8407 0.4105 -0.1182 2.4237 3.2231

カテゴリ

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

タグ

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by