What's the solution?
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Stephen23
2017-5-9
编辑:Stephen23
2017-5-9
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 个评论
Stephen23
2017-5-9
编辑:Stephen23
2017-5-9
"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);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!