【问题标题】:inserting an image and plotting it MATLAB插入图像并绘制它MATLAB
【发布时间】:2012-11-26 11:55:31
【问题描述】:

我试图插入一个方程并绘制它,但我不能,因为我不断收到错误,例如:矩阵维度必须一致,或者内部矩阵维度必须一致。

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));

下标索引必须是正整数或逻辑数。

【问题讨论】:

标签: matlab plot equation


【解决方案1】:
  1. 要遍历mq 的每个组合:您想使用ndgrid。现在,mq 都是行向量,因此数组操作只会将m 的第一个元素与q 的第一个元素相结合,第二个元素与第二个元素相结合,依此类推.你想要的是一个二维矩阵,其中m 沿一个维度变化,q 沿另一个维度变化。这就是ndgrid 所做的。试试这个:

    [q, m] = ndgrid(0:0.1:1, 1:0.5:6);
    
  2. 对于下标索引错误消息:问题是乘法与数组访问。在等式 PNG 中,分母的形式为 M{…},这意味着 M 乘以大括号中的值。在您的代码中,您编写了m(…),这实际上是一个数组访问——而不是乘法。将其更改为 m .* (…) 会使代码正常工作。工作版本是:

    e=q./(m.*(1-sqrt(1-(q./m).^2)));
    

    现在,你可以这样做了:

    figure; plot(e);
    

    ...你应该得到与你想要的相似的输出。

【讨论】:

  • 谢谢你的帮助,但图表看起来很不一样,我没有设法得到多条线,我的意思是我得到的只是图表中的 1 条线。我应该使用哪个函数来获取那种类型的图表。 >> m=1:0.5:6; >> q=0:0.1:1; >> a=2*3.14; >> b=m; >> c=3.14; >> d=q./(2*m)-acos(sqrt(1-(q./m).^2)); >> e=q./(m.*(1-sqrt(1-(q./m).^2))); >> g=b.*(c.*d.*e); >> h=a./g; >>
  • 对——对不起。您想在该部分使用ndgrid;相应地更新我的答案。
  • 我不知道是什么问题,但图表仍然不一样,我想也许将方程分成几部分是原因,所以我尝试一次插入整个方程,但是我没有工作图表仍然不一样。 a=2*3.14./m.* (3.14+q./(2*m))-acos(sqrt(1-(q./m).^2))+q./(m.*(1 -sqrt(1-(q./m).^2)‌​));
  • @AbdoAdam,你对这个等式有几个问题。任何时候你在分母中都有一些东西,确保它周围有括号。第一个问题是您希望等式的整个后半部分在主分数的分母中,但正如您所写的那样,只有m 在分母中。我试图修正这个等式,我认为它应该看起来更像这样:a=2*3.14./(m.* (3.14+q./(2*m)-acos(sqrt(1-(q./m).^2))+(m./q).*(1-sqrt(1-(q./m).^2))));...但你应该仔细检查我。
  • @AbdoAdam 另外,关于图表:我不知道如何解释它。看起来M 在 Y 轴上? X轴是一个数量f/f0——和A一样吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-06
  • 2010-11-01
  • 2014-04-13
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 2011-03-11
相关资源
最近更新 更多