Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 大小输入必须是标量_Matlab - Fatal编程技术网

Matlab 大小输入必须是标量

Matlab 大小输入必须是标量,matlab,Matlab,有人能告诉我如何修复“大小输入必须是标量”错误吗?当我在matlab中运行代码时,它工作正常,但当我运行编译后的exe时,我得到以下错误: 使用randperm时出错 大小输入必须是标量 randsample中的错误(第162行) “mycode”(第行)中出错 .'IndexSwith0=randsample(1:n-sumboo,n-sumboo);%'…) MATLAB:非标量输入 谢谢根据,有两种方法可以使用带有两个输入参数的randsample: y=randsample(n,k)返回

有人能告诉我如何修复“大小输入必须是标量”错误吗?当我在matlab中运行代码时,它工作正常,但当我运行编译后的exe时,我得到以下错误:

使用randperm时出错

大小输入必须是标量

randsample中的错误(第162行)

“mycode”(第行)中出错 .'IndexSwith0=randsample(1:n-sumboo,n-sumboo);%'…)

MATLAB:非标量输入

谢谢

根据,有两种方法可以使用带有两个输入参数的
randsample

y=randsample(n,k)返回采样值的k×1向量y 从整数1到n,均匀随机,无需替换

y=randsample(总体,k)返回采样的k个值的向量 根据 媒介种群。y(行或列)的方向与 人口

因此,为第一个参数
n
提供一个向量是合法的,但不为第二个参数
k
提供向量

如果查看randsample函数(键入
编辑randsample
)并转到第162行,您可以看到实际引发此错误的命令是

y = y(randperm(k));
其中
k
randsample
的第二个参数。因此,在运行编译后的代码时,似乎最终得到了
ntoalyze sumboo
的一个值,这是一个向量,而不是标量,在编辑器中测试代码时,您没有复制这种情况


如果
options.ntoalyze
是一个向量,则可能发生这种情况;如果
double_y
是矩阵(维度2或更高),也可能发生这种情况,因为
boo
将具有相同的维度,而
sum(boo)
将具有更小的维度。检查代码的其余部分,找出其中任何一个可能发生的地方

你能检查你提供给randsample的值吗?你给函数提供了输入,这些函数被支持为大小,作为标量。randsample(1:n-sumboo,nToAnalyze-sumboo);“1:n-sumboo”是一个双数组(1x348392),而ntoalyze-sumboo是一个标量(值=78887)。。。谢谢,我在修改“indexswith0=randsample(n-sumboo,ntoalyze-sumboo)”后编译了代码,但我得到了相同的错误。。。谢谢好的,我更仔细地查看了
randsample
的帮助。请参见编辑。我通过引入以下行解决了问题:
if~isnumeric(ntoalyze)ntoalyze=str2double(ntoalyze);结束
。非常感谢。
y = y(randperm(k));