How to create 3d array whose value follows a certain pattern without using for-loop?
12 次查看(过去 30 天)
显示 更早的评论
How to create 3d array whose value follows a certain pattern without using for-loop?
For the following example, how to modify it to meet the requirement above?
A = zeros(m, n, 3);
for i = 1 : m
for j = 1 : n
A(i, j) = [i, j, i*j];
end
end
0 个评论
回答(1 个)
Dyuman Joshi
2023-9-25
编辑:Dyuman Joshi
2023-9-25
Your code will not run as you are trying to store 3 numeric values in 1 numeric place holder. I have corrected the code below
%Random values for example
m = randi(10)
n = randi(10)
A = zeros(m, n, 3);
for i = 1 : m
for j = 1 : n
%Correction
% v
A(i, j, :) = [i, j, i*j];
end
end
To get the same result without the for loop, utilize vectorization -
[M,N] = ndgrid(1:m,1:n);
%Concatenate individual arrays to make a 3D array
A0 = cat(3,M,N,M.*N);
%Check if the arrays are equal or not
isequal(A0,A)
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!