将for循环中的数据存储到MATLAB中进行绘图

将for循环中的数据存储到MATLAB中进行绘图,matlab,Matlab,我有一个计算方差的循环,我想画出来 for k = [1:3] disp(B.colheaders{1, k}); %disp(B.data(1:79, k + 1)); for j = [1:10:79] disp(j) Variance = var(B.data(j:j+8, k)) end %disp(V) plot(Variance) end 如何将方差存储到数组或矩阵中,以便将它们全部打印出来?如果要保持循环,可以采用以下方法: figure,hold on %# a

我有一个计算方差的循环,我想画出来

for k = [1:3]
disp(B.colheaders{1, k});
%disp(B.data(1:79, k + 1));
for j = [1:10:79]
    disp(j)
    Variance = var(B.data(j:j+8, k))
end
%disp(V)
plot(Variance)
end

如何将方差存储到数组或矩阵中,以便将它们全部打印出来?

如果要保持循环,可以采用以下方法:

figure,hold on %# avoid erasing the previous plots
for k = [1:3]
disp(B.colheaders{1, k});
%disp(B.data(1:79, k + 1));
startIdx = [1:10:79];
Variance = zeros(size(startIdx));
for j = startIdx
    disp(j)
    Variance(j==startIdx) = var(B.data(j:j+8, k))
end
%disp(V)
plot(Variance)
end
这里有一种跳过内部循环的方法

figure,hold on
for k = [1:3]
disp(B.colheaders{1, k});
%disp(B.data(1:79, k + 1));
startIdx = [1:10:79];
varIdx = bsxfun(@plus,startIdx,(0:7)'); %# create array for indexing

currentData = B.data(:,k);

%# calculate variance for each column
Variance = var(currentData(varIdx),1,1);

plot(Variance)
end

如果你想保持循环,这里有一个方法:

figure,hold on %# avoid erasing the previous plots
for k = [1:3]
disp(B.colheaders{1, k});
%disp(B.data(1:79, k + 1));
startIdx = [1:10:79];
Variance = zeros(size(startIdx));
for j = startIdx
    disp(j)
    Variance(j==startIdx) = var(B.data(j:j+8, k))
end
%disp(V)
plot(Variance)
end
这里有一种跳过内部循环的方法

figure,hold on
for k = [1:3]
disp(B.colheaders{1, k});
%disp(B.data(1:79, k + 1));
startIdx = [1:10:79];
varIdx = bsxfun(@plus,startIdx,(0:7)'); %# create array for indexing

currentData = B.data(:,k);

%# calculate variance for each column
Variance = var(currentData(varIdx),1,1);

plot(Variance)
end

我花了一段时间才回到这个话题。但它奏效了。谢谢你让我回到这个话题上来。但它奏效了。谢谢