矢量化标量/矢量分裂

时间:2013-02-18 11:14:53

标签: matlab vectorization

例如我有:

Q1=4;
Q2=5;
PG=2:60

A1=Q1./sqrt(PG);
A2=Q2./sqrt(PG);

plot(PG,A1)
plot(PG,A2)
我可以这样做吗??

Q=[Q1,Q2];
A=Q./sqrt(PG);
plot(PG,A(1))
plot(PG,A(2))

还是......要避开A1和A2?

1 个答案:

答案 0 :(得分:2)

A=bsxfun(@rdivide,[Q1;Q2],sqrt(PG))会这样做(请注意Q1Q2之间的分号,而不是逗号),但如果问题中的代码是您的用例,并且您希望其他任何人使用阅读并理解代码,我建议不要使用它。

您必须使用AA(1,:)处理A(2,:)行(无论您如何到达A),但您可能希望plot(PG,A)无论如何。

[首次评论后编辑:] rdivide只是MATLAB代码中通常用./表示的函数的名称,适用于相同大小的数组或标量和数组。 bsxfun将简单地将两个参数函数应用于以其认为最合适的方式提供给它的其他两个参数(以简化一点)。 arrayfun做了类似的事情:将函数应用于一个数组的所有元素。要在此处申请,需要一个内部有PG硬编码的函数。

相关问题