首页 > 解决方案 > 将向量输入传递给 MATLAB 函数

问题描述

我正在尝试在 MATLAB 中编写一个以 1x3 向量作为输入的函数。我的代码看起来像这样:

function myFunction=([x1, x2, x3], [y1, y2, y3], [z1, z2, z3])

其中所有输入都是数字,然后在函数的主体中,我通过向量中的数值执行一些计算索引。我希望向量是用户输入,因此用户将向量及其分量(x1、x2 等)输入到函数参数中。但是,我收到一条错误消息:“表达式无效。调用函数或索引变量时,请使用括号。否则,请检查不匹配的分隔符。” 因此,我相信我的语法或其他错误。我知道 MATLAB 应该能够在函数中接受向量输入,所以请让我知道我做错了什么。谢谢!

标签: matlabfunctionvector

解决方案


您需要做的是像这样声明您的函数:

function myFunction(x,y,z)
% your function code here
end

x(1)然后在您的函数中,您可以使用、y(2)等访问向量的各个元素。

要调用函数,包括您喜欢的任何数字,您可以在 Matlab 命令窗口中输入(例如), myFunction([1 2 3],[4 5 6],[7 8 9])然后调用函数中的代码,x变量设置为 vector [1,2,3]y变量设置为[4,5,6]zto [7,8,9]。使用逗号来描述值是可选的。如果您的函数然后访问y(2)它将获得y向量的第二个值,这将是5- 重要的是要注意 Matlab 中的索引是基于 1 的,因此第一个元素x是使用x(1).

如果您需要返回值,您可以使用:

function [a,b,c] = myFunction(x,y,z)

然后只需在语句之前分配a,bc在您的代码中。end

有关更多信息,请参阅官方 Matlab 文档

我要补充一点,matlab 的大部分优势在于以矢量化形式处理数据,所以如果你可以避免拆分成单独的元素,我会这样做。例如,如果你需要添加两个向量,你可以这样做z = [x(1)+y(1), x(2)+y(2), x(3)+y(3)],但更好(更易读、更易维护、更快)是z=x+y.


推荐阅读