我编写了一个在MATLAB中运行的完整代码,但输出的结果略有不正确。我需要得到以下内容:
utotal
,其中
utotal = S1plot + S2plot + ...
直到数字等于(N / 2)+ 1,其中N是偶数。如果N = 10,那么数字将为6。
然后我需要在脚本中评估utotal。我怎样才能做到这一点?
这是我到目前为止所做的:
N = 10;
for alpha = 1:(N/2+1)
eval(['utotal = sum(S' num2str(alpha) 'plot);'])
end
但它不起作用,因为它评估以下内容:
utotal = sum(S1plot);
utotal = sum(S2plot);
utotal = sum(S3plot);
utotal = sum(S4plot);
utotal = sum(S5plot);
utotal = sum(S6plot);
提前感谢您的帮助。
答案 0 :(得分:2)
这是您现在可以使用的解决方法。请注意,这是非常糟糕的编码习惯,您现在遇到的困难只是您不应该这样做的原因之一。
%// Generate random data
S1plot = randi(100,51,5);
S2plot = randi(100,51,5);
S3plot = randi(100,51,5);
S4plot = randi(100,51,5);
S5plot = randi(100,51,5);
S6plot = randi(100,51,5);
N = 10;
%// Put individual matrices into 3D matrix S
%// To access matrix Snplot, use S(:,:,n)
%// This is the format these variables should have been in in the first place
for alpha = 1:(N/2+1)
eval(['S(:,:,' num2str(alpha) ') = (S' num2str(alpha) 'plot);'])
end
%// Now sum along the third dimension
utotal = sum(S,3);
答案 1 :(得分:1)
请参阅@beaker的评论。该解决方案不符合OP的要求。
我没有对此进行过测试,但它应该有效。
N=10;
for alpha = 1:(N/2+1)
allSum = [allSum 'sum(S' num2str(alpha) 'plot)+'];
end
allSum(end)=';';
eval(['utotal = ' allSum]);
答案 2 :(得分:0)
N = 10;
Result =0;
for alpha = 1:(N/2+1)
Result = Result + num2str(alpha)
end
eval(['utotal = sum(S' Result 'plot);'])