I want to create two variables which are matrices is zeros(3,2) and zeros(4,2)
y = [3 4];
for i=1:length(y)
x=zeros(y(i),2)
end
x = 3×2
0 0 0 0 0 0
x = 4×2
0 0 0 0 0 0 0 0
I dont want the second loop to overwrite the result of the first loop.

 채택된 답변

Paul
Paul 2023년 11월 21일
One option is to use a cell array to store dissimilar objects
y = [3 4];
for i=1:length(y)
x{i}=zeros(y(i),2)
end
x = 1×1 cell array
{3×2 double}
x = 1×2 cell array
{3×2 double} {4×2 double}
Though not shown here, x can be preallocated based on the number of elements in y.

추가 답변 (2개)

Les Beckham
Les Beckham 2023년 11월 21일
Perhaps this (using a cell array)?
y = [3 4];
for i = 1:length(y)
x{i} = zeros(y(i), 2)
end
x = 1×1 cell array
{3×2 double}
x = 1×2 cell array
{3×2 double} {4×2 double}
Mathieu NOE
Mathieu NOE 2023년 11월 21일
hello
some solutions :
y = [3 4];
for k=1:length(y)
% solution 1 : store as cell array
x{k} =zeros(y(k),2);
% solution 2A : store as structure
s(k).data =zeros(y(k),2);
% solution 2B : another structure
t.data{k} =zeros(y(k),2);
end
x
x = 1×2 cell array
{3×2 double} {4×2 double}
s
s = 1×2 struct array with fields:
data
t
t = struct with fields:
data: {[3×2 double] [4×2 double]}

카테고리

도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

질문:

2023년 11월 21일

답변:

2023년 11월 21일

Community Treasure Hunt

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

Start Hunting!

Translated by