What's the solution?
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
For example: If I have matrix A and Matrix B:
A =
7 4 1
4 5 6
3 6 9
>> B = zeros(4,4)
B =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
I want I want element (3,2) from matrix B with size (4,4) to try the values of the first column from matrix A with size (3,3) one by one and at each time produce the new matrix. So, the output will be:
B =
0 0 0 0
0 0 7 0
0 0 0 0
0 0 0 0
B =
0 0 0 0
0 0 4 0
0 0 0 0
0 0 0 0
B =
0 0 0 0
0 0 3 0
0 0 0 0
0 0 0 0
How can I do this ?
0 Commenti
Risposta accettata
Stephen23
il 9 Mag 2017
Modificato: Stephen23
il 9 Mag 2017
Here is one easy way, by generating one 3D array B and allocating all values of A in one go:
>> A = [7,4,1;4,5,6;3,6,9];
>> B = zeros(4,4,numel(A));
>> B(2,3,:) = A(:);
and testing each page of B, shows that it has all of the correct matrices:
>> B(:,:,1)
ans =
0 0 0 0
0 0 7 0
0 0 0 0
0 0 0 0
>> B(:,:,2)
ans =
0 0 0 0
0 0 4 0
0 0 0 0
0 0 0 0
>> B(:,:,3)
ans =
0 0 0 0
0 0 3 0
0 0 0 0
0 0 0 0
>> B(:,:,4)
ans =
0 0 0 0
0 0 4 0
0 0 0 0
0 0 0 0
etc
2 Commenti
Stephen23
il 9 Mag 2017
Modificato: Stephen23
il 9 Mag 2017
"I can't deal with the 3D matrix after that"
Yes, you can: I showed you how to get the 2D matrices out of it. Have another look at all of those matrices in my answer. All of them are 2D. You can trivially loop over the third dimension of B to give you exactly what you asked for:
for k = 1:size(B,3)
M = B(:,:,k);
... your code dealing with M.
end
"I want element (3,2) to take the values from the 1st column in matrix A only."
Easy:
B = zeros(4,4,size(A,1));
B(2,3,:) = A(:,1);
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!