【发布时间】:2013-04-24 03:41:56
【问题描述】:
我有一个包含两个向量的变量。我想将这些数量从 i = 1 加到 n,其中 n = 100。当程序运行时,我可以单击工作空间中的变量来查看每个列位置的向量的元素值。当执行其位置的变量时,我得到相应的值,(例如,z(1) = 73.2360, z(2) = 63.3701, .... 等等)。但我似乎无法弄清楚如何为这些向量编制索引,以使总和贯穿两个向量的元素。例如在 for 循环中。我还查看了symsum(),但这只需要通用变量。我试图从 i = 1 到 100 求和 epsilon,其中 z_i 和 w_i 是感兴趣的向量。我希望 MWE 能展示更多我想要完成的事情。
MWE:
a = 0.6;
b = sqrt(16-a^2);
c = 6.5;
d = sqrt(225-c^2);
xh = randn(1,100);
yw = randn(1,100);
z = a*xh + b*yw + 68;
w = c*xh + d*yw + 160;
n = 100; % # of data entries.
zbar = ((1/n)*sum(z)); % Height data.
wbar = ((1/n)*sum(w)); % Weight data.
Zbarv = zbar*ones(1,100); % Height data vector.
Wbarv = wbar*ones(1,100); % Weight data vector.
sz = sqrt((1/n)*((z-Zbarv)*(transpose(z)-transpose(Zbarv))));
sw = sqrt((1/n)*((w-Wbarv)*(transpose(w)-transpose(Wbarv))));
czw = ((1/n)*(w-Wbarv)*(transpose(z)-transpose(Zbarv)));
rzw = czw/(sz*sw);
b = wbar - ((czw/sz^2)*zbar); % y-intercept
m = czw/sz^2; % Slope
epsilon = (1/(n-1))*sum((w-(m*z+b)).^2); % Error
epsilon 应该对此求和,但应该是来自i=[1,100] 的总和。我不知道如何索引 w_i 和 z_i 向量的值,以便总和通过它们。我尝试为它们创建一个输入变量,例如 z(i) 和 w(i),但结果很混乱。
有什么建议吗?
【问题讨论】:
-
所以你想计算1到100之间
i的每个值的前i个元素的总和?
标签: matlab for-loop vector indexing sum