我正在尝试插入一个方程并绘制它,但我不能因为我不断得到错误:矩阵尺寸必须一致,或者内部矩阵尺寸必须一致。
http://www4.0zz0.com/2012/11/25/10/272913238.png 这是等式。 M的值为1到6,增量为0.5。 Q的值为0到1,增量为0.1。
http://www4.0zz0.com/2012/11/25/10/700692428.png 情节是这样的
m=1:0.5:6;
q=0:0.1:1;
我试图将方程式分成几部分,所以插入它会更容易,但我在最后一部分出错了
e=q./m(1-sqrt(1-(q./m).^2));
下标索引必须是实数正整数或逻辑。
答案 0 :(得分:1)
要迭代m
和q
的每个组合:您想使用ndgrid
。现在,m
和q
都是行向量,因此数组式操作只会将m
的第一个元素与q
的第一个元素,第二个元素与第二个元素,等等。你想要的是一个2D矩阵,其中m
沿着一个维度变化,q
沿着另一个维度变化。这就是ndgrid
的作用。试试这个:
[q, m] = ndgrid(0:0.1:1, 1:0.5:6);
对于下标索引错误消息:问题是乘法与数组访问。在等式PNG中,分母的格式为M{…}
,这意味着M
乘以括号中的值。在您的代码中,您编写m(…)
,这实际上是一个数组访问 - 而不是乘法。将其更改为m .* (…)
会使代码生效。工作版本是:
e=q./(m.*(1-sqrt(1-(q./m).^2)));
现在,你可以这样做:
figure; plot(e);
...你应该得到类似于你想要的输出。