How to create 3d array whose value follows a certain pattern without using for-loop?

12 views (last 30 days)
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

Answers (1)

Dyuman Joshi
Dyuman Joshi on 25 Sep 2023
Edited: Dyuman Joshi on 25 Sep 2023
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)
m = 10
n = randi(10)
n = 5
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)
ans = logical
1

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!