How to make a 3D matrix from 3 vectors?
14 ビュー (過去 30 日間)
古いコメントを表示
3 vectors, a b c, to be used as factor or filter for a 3D matrix V. For 2D it's easy and elegant:
d=a'*b;
f=M.*d; % M 2D matrix
The 3D filter can be done this way:
f=V*0.0;
for n=1:n3
f(:,:,n)=V(:,:,n)*c(n);
end
Is there a more elegant way for this? For example make a 3D matrix D from the 3 vector and then
f=D.*V
Thanks
0 件のコメント
採用された回答
Matt J
2016 年 1 月 13 日
編集済み: Matt J
2016 年 1 月 13 日
For filtering, it is probably not a good idea to convolve with d or D. Instead, you should filter separably. For example, in 2D, you could do,
f = conv2(a,b,M);
For element-wise multiplication in 3D, I similarly don't think building D is the way to go, as it creates an unnecessary extra array. I would probably do,
f=bsxfun(@times,V, a(:)*b(:).');
f=bsxfun(@times,f, reshape(c,1,1,[]));
But, if you really insist on building D, you could do
D = bsxfun(@times, a(:)*b(:).', reshape(c,1,1,[]));
Or, you could do
d=a(:)*b(:).';
D=reshape(d(:)*c(:).', size(V));
その他の回答 (0 件)
参考
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!