以八度为单位,误差:对于x ^ A,A必须为方矩阵。将。^用作元素功率

时间:2019-01-31 04:45:59

标签: octave

在Octave中,我在单独的文件正方形中定义了一个函数。m

function y = square(x)
y = x^2;
endfunction

在其他文件脚本中,我有

disp("Hello World 2");
fplot( @(x) square(x),[-1 1])

我得到 错误:对于x ^ A,A必须是正方形矩阵。使用。^表示逐元素幂。

如果我尝试

y = x.^2; 

在函数中,我得到完全相同的消息

2 个答案:

答案 0 :(得分:1)

出现该错误的原因是因为fplot一次将所有指定范围作为矢量传递,将您的函数视为矢量化函数,期望有矢量输入并返回矢量输出。 / p>

您可以通过以下方法确认“正确”:将“调试时出错”变为true,执行debug_on_error(true),运行有问题的行,然后检查x

因此,在函数内部,事情出了问题,因为您试图获取向量的平方,这是一个非法操作(从数学上来说)。

在这种情况下,将函数转换为y = x.^2应该可行,因为您要将向量的每个元素都转换为其平方,这就是您想要的。但是显然,仅将^更改为.^可能无法解决每个问题。

通常,最好创建自己的“范围”和“输出”并使用plot直接绘制它们;这样可以给您更多的控制权,并且您可以先检查输入和输出,以确保您正在绘制自己想绘制的内容。

答案 1 :(得分:0)

欢迎使用StackOverflow!

我刚刚在https://octave-online.net/上尝试了您的代码(无需创建帐户,甚至也不需要文件)。

第二个版本可以按预期工作:y = x .^ 2;在函数内部。

确定修改后保存了文件吗?