Function 倍频程错误:can';t读取.m文件中的变量

Function 倍频程错误:can';t读取.m文件中的变量,function,file-io,octave,Function,File Io,Octave,我的工作目录中有一个“数据”文件“lab1.m”。 这里是它们的内容 数据: 01 2 3 4 20927 56347 lab1.m: load data function y = RSSI_to_dBm(x, z) y = data(z, x); end 但是,当我将RSSI_调用到_dBm(2,2)时,出现了一个错误: 倍频程:30>RSSI_至_dBm(2,4) 错误:“数据”在第3行第6列附近未定义 错误:从以下位置调用: 错误:第3行第4列的RSSI_至_dBm 我怎样才

我的工作目录中有一个“数据”文件“lab1.m”。 这里是它们的内容

数据:

01 2 3 4

20927

56347

lab1.m:

load data
function y = RSSI_to_dBm(x, z)

    y = data(z, x);

end
但是,当我将RSSI_调用到_dBm(2,2)时,出现了一个错误:

倍频程:30>RSSI_至_dBm(2,4)

错误:“数据”在第3行第6列附近未定义

错误:从以下位置调用:

错误:第3行第4列的RSSI_至_dBm

我怎样才能解决它? 如何将“数据”加载到变量名(如“a”)中?
谢谢您的回答。

我也有点困惑,但我会研究一下:

“错误:`数据'在第3行第6列附近未定义”

因为您的数据数组中只有5列,但错误是指第6列

找到第6栏,你可能会发现你的问题。确保数据矩阵的尺寸与“x”和“z”参数的尺寸匹配。如果它们倾斜,这可能会导致MATLAB出现问题。我发现使用调试器监控矩阵的维度是最容易的


希望这能帮助您找到正确的方向。

问题在于
数据
被解释为变量名,但没有名为
数据
的变量。将文件名放在引号中可以轻松解决此问题:

load "data";
您可能需要指定文件扩展名,并且可以按照通常的方式将结果分配给变量:

A = load "data.txt";

我尝试了一种解决方案:

load data
function z = RSSI_to_dBm(x, y, data)

    z = data(x, y);

end

每次我调用它时,它都会将“数据”传递给函数。

谢谢。我照你说的做了,但是,当我使用'a=load“data'时,出现了语法错误。我确信我的原始代码确实通过键入“whos”生成了一个名为“data”的变量。如果我在倍频程命令行中键入“data(1,1)”,结果是“ans=0”。错误消息是什么?您可能需要使用函数语法
A=load(“data”)
,但如果没有更多信息,我真的无法判断您的问题是什么。如果不提供任何输出参数,则
load
将自动创建一个与文件同名的变量,并将数据放入其中。“a=load(“data”)”起作用。但是当尝试在函数中使用时会显示一条错误消息(类似于“error:
A
undefined”)。但是,如果每次我想使用它时都向函数传递一个函数,它就会工作。所以我的解决方案是重新定义RSSI_to_dBm(z,x)到RSSI_to_dBm(z,x,data)我认为“列”是指代码中的列,而不是矩阵中的列。实际上,我的真实数据是一个千乘十六的矩阵。谢谢你的回答。