【问题标题】:Trouble plotting a piecewise defined function in MATLAB在 MATLAB 中绘制分段定义的函数时遇到问题
【发布时间】:2016-06-17 12:01:49
【问题描述】:

我正在尝试在 MATLAB R2016a 中绘制一个简单的分段定义函数。当 t 为负时,此代码应绘制 v = 0,当 t 为正(或零)时,代码应绘制 v = 10*exp(-5000*t)。代码如下:

t = -0.0014:1e-5:0.0014;
v = zeros(1, length(t));
for i = 1:length(t)
    if t(i) < 0
        v(i) = 0;
    elseif t(i) >= 0
        v(i) = 10*exp(-5000*t);
    end
end
plot(t, v)

这个 m 文件在我看来是正确的,但我不断收到错误

In an assignment  A(:) = B, the number of elements in A and B must be the same.

Error in PiecewiseFunction (line 10)
        v(i) = 10*exp(-5000*t);

我怀疑这很简单,但我就是没看到!

【问题讨论】:

  • v(i) = 10*exp(-5000*t(i));
  • 鉴于 Matlab 错误消息非常有用(通常如此),您知道问题是因为“A 和 B 中的元素数量必须相同”,所以这意味着数量v(i)10*exp(-5000*t) 中的元素数量必须不同。为了进一步调试,您可以在错误前的 2 行上完成 size(v(i))size(10*exp(-5000*t))。这将显示问题所在,然后您只需要弄清楚如何解决它。 Matlab 错误信息非常有用,阅读它们并思考它们在说什么!
  • 优秀的解决方案和 cmets!

标签: matlab for-loop piecewise


【解决方案1】:

问题上的 cmets 回答了这个问题,但如果将其矢量化,则可以使这段代码更简单:

v = 10*exp(-5000*t).*(t >= 0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多