Matlab:在不存储所有9个值的情况下,使9行具有相同的值

Matlab:在不存储所有9个值的情况下,使9行具有相同的值,matlab,Matlab,我需要创建一个包含1e7 x 9值的数组。所有行都不同,但所有列都是第一行的副本: n=1e7; %simulations t=1:8; %contacts lambdaU=repmat(rand(n,1),1,length(t)+1) %<<<<<<<Here CalcTimU=zeros(n,length(t)+1); %I then do: for j=1:n %for each simulation (row) for i=2:le

我需要创建一个包含1e7 x 9值的数组。所有行都不同,但所有列都是第一行的副本:

n=1e7; %simulations
t=1:8; %contacts
lambdaU=repmat(rand(n,1),1,length(t)+1) %<<<<<<<Here 

CalcTimU=zeros(n,length(t)+1);

%I then do:
for j=1:n %for each simulation (row)
    for i=2:length(t)+1 % for each column

    CalcTimU(j,i)=CalcTimU(j,i-1)+lambdaU(j,i).*(10-CalcTimU(j,i-1));


    end 
end
n=1e7;%模拟
t=1:8;%联络

lambdaU=repmat(rand(n,1),1,长度(t)+1)%。您甚至可以矢量化j循环:


你的预期产出是多少?请用一个小示例解释一下,您只阅读了这段代码中的
lambdaU(j,1)
,您需要其他列做什么?我现在已经使它依赖于I和j。但是这个示例仍然没有意义:您可以用
lambdaU(j,1)
替换
lambdaU(j,1)
,并获得完全相同的输出。现在你又不需要那些额外的列了。谢谢你,我不知道你可以在循环中矢量化!也节省了大量的时间!
n=1500; %simulations
t=1:8; %contacts

lvec = rand(n,1);
lambdaU=repmat(lvec,1,length(t)+1); %<<<<<<<Here 

CalcTimU=zeros(n,length(t)+1);

tic
%I then do:
for j=1:n %for each simulation (row)
    for i=2:length(t)+1 % for each column
    CalcTimU(j,i)=CalcTimU(j,i-1)+lambdaU(j,i).*(10-CalcTimU(j,i-1));
    end 
end
toc

% Vectorized:
tic
CalcTimU2=zeros(n,length(t)+1);
for i=2:length(t)+1
    CalcTimU2(:,i) = CalcTimU2(:,i-1)+lvec.*(10-CalcTimU2(:,i-1));
end
toc

isequal(CalcTimU,CalcTimU2)
Elapsed time is 0.220032 seconds.
Elapsed time is 0.00030899 seconds.
ans = 1