【问题标题】:Make a function return multiple values in Matlab在 Matlab 中使函数返回多个值
【发布时间】:2013-11-24 23:52:42
【问题描述】:

我在 Matlab 中编写了一个程序,目的是计算某个函数的积分。我应该使用梯形法进行积分。目前,代码如下所示:

a=0; b=2.5; n=2; % n is the number of intervals
h=(b-a)/n; %the width of every interval
x=a:h:b
y=labb2uppg1Funkfil(x)
trapets=h*(sum(y)-(y(1)+y(length(y)))/2)
plot(x,y) 

% This is located in a different file named labb2uppg1Funkfil
function y = funk(x)
y = exp(-x/3)/(2-cos(pi*x));

我认为问题在于我的函数只返回一个 y 值,而它应该更多!如何重写函数以返回多个值?还是这里有什么问题?

提前致谢! 结束

【问题讨论】:

  • 我看到一个问题,你在函数 funk 中使用矩阵除法而不是元素方式
  • 谢谢!现在效果很好,不是我第一次忘记必须承认的点,但我以后会更加小心!

标签: matlab integral


【解决方案1】:

@DanilAsotsky 是 Rigth。如果您希望该函数为您插入的每个 x 返回一个 y,您应该重写该函数以进行元素操作

function y = funk(x)
y = exp(-x./3)./(2-cos(pi.*x));

会做的工作

【讨论】:

  • 非常感谢,伙计。奇迹般有效!你们都拯救了我的夜晚!
【解决方案2】:

您需要使用逐元素除法 (./) 而不是矩阵除法 (/)。 Documentation here.

y = exp(-x/3) ./ (2-cos(pi*x));

另请注意,强烈建议函数和文件名相同。两者都应该是“labb2uppg1Funkfil”或“funk”。

【讨论】:

  • 非常感谢,我按照您的建议更改了名称,以后会继续这样做:)
猜你喜欢
  • 2011-05-10
  • 2013-04-26
  • 1970-01-01
  • 2021-09-10
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多