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

回答(1 个)

Dyuman Joshi
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)
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

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by