Avoid for loop in multi-dimensional problem
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Howard Wilton
am 21 Nov. 2022
Kommentiert: Howard Wilton
am 21 Nov. 2022
I am looking to create a 3D matrix the achieves the following:
A(:,:,1)=[0 -2*pi; 2*pi 0]; A(:,:,2)=[0 -4*pi; 4*pi 0];
Ultimately, I am trying to solve
, which in this instance will evaluate to 0. But for now, I just want to figure out how to build the
matrix
.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1201378/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1201383/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1201388/image.png)
I have the following code:
l=0:1; q=0:1; p=2*pi*(1:2);
sub = l(:)-q(:).' % gives a 2x2 matrix
sub2 = repmat(sub,[1 1 2]) % repeats the 2x2 matrix to give a 2x2x2 matrix
for p_ = 1:length(p)
A(:,:,p_) = p(p_)*sub2(:,:,p_);
end
I am looking to conduct a multiplation that yields
without having to use a for loop. Any suggestions would be appreciated.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1201393/image.png)
0 Kommentare
Akzeptierte Antwort
Stephen23
am 21 Nov. 2022
Bearbeitet: Stephen23
am 21 Nov. 2022
Some ideas:
format compact
A = cat(3,[0,-2*pi;2*pi,0],[0,-4*pi;4*pi,0]) % use CAT()
A = pi*cat(3,[0,-2;2,0],[0,-4;-4,0]) % take out the commom PI
A = pi*cat(3,2,4).*[0,-1;1,0] % multiply two arrays
A = cat(3,2,4).*[0,-pi;pi,0] % multiply two arrays
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!