【发布时间】:2014-12-08 04:14:36
【问题描述】:
我有一个脚本来获取 simulink 模型的输出并将此信息放入一个数组中,以便编写每个循环,然后可以绘制/分析等。但是在运行脚本时,我得到以下信息:
test1
Outvs =
68.0000
68.0007
68.0430
68.0746
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in test1 (line 19)
output(sensv0) = Outvs;
我的脚本如下:
%Vectors/containers to store values%
%input = zeros(4,4);
output = zeros(4,4);
%INITIAL VELOCITY (v0)
%do a sensitivity analysis for different input values
for sensv0 = 85:88
%step 1: define input value to variable
v0 = sensv0;
%step 2: run simulation
sim('sldemo_absbrake');
%step 3: look at graphs at t=0,5,10,15s for Vehicle Speed
Outvs = getdatasamples(vs, [2,6,11,14]);
%Display Outvs (troubleshooting)
Outvs
%input(sensv0) = v0;
output(sensv0) = Outvs;
end
【问题讨论】:
-
您将多个样本放入一个输出字段。如果输出是长度为 4 的行(!)向量(我认为基于您的预分配),您可以尝试
output(sensv0-84,:) = Outvs;减去 84 是访问索引 1 到 4 所必需的,并且完整的行由结肠。如果这不起作用,只需将Outvs打印到屏幕上,而不是将其分配给output的某个子集。然后您可以看到Outvs的实际外观,并基于此,您可以想办法将其正确存储在output矩阵的一部分中。 -
糟糕,我错过了您在问题中包含
Outvs的形状:它的 4×1。所以,这意味着output(:,sensv0-84) = Outvs;应该可以工作。我相信你可以自己弄清楚为什么;)
标签: arrays matlab loops overwrite