function y = target(x) if size(x, 2) ~= 2 error('x must be an Nx2 matrix'); end y = x(:,1).*x(:,2)-1500; end values(i) = feval(target, x_x(:,1),x_x(:,2) ); 输入参数的数目不足。,如何改正?
时间: 2023-09-13 10:03:05 浏览: 106
在调用 `feval(target, x_x(:,1),x_x(:,2) )` 时,需要传入一个参数矩阵 `x_x`,但是你可能没有在代码中正确地定义 `x_x`。请确保定义了 `x_x`,并且它是一个 Nx2 的矩阵,其中 N 是样本数量。如果已经定义了 `x_x` 但仍然出现错误,可能是因为 `x_x` 的维度不正确,你可以尝试使用 `size(x_x)` 检查 `x_x` 的大小是否正确。
相关问题
function y = target(x) if size(x, 2) ~= 2 error('x must be an Nx2 matrix'); end y = x(:,1).*x(:,2)-1500; end values(i) = feval(target, x_x(:,1),x_x(:,2) ); 输入参数的数目不足。,如何改正?
这个错误是因为在调用 `feval` 函数时,输入参数的数量不足。可以按照以下步骤进行修正:
1. 确保 `x_x` 是一个 Nx2 的矩阵,如果不是,则需要对其进行转换。
2. 修改 `feval` 函数的调用方式,将 `x_x(:,1)` 和 `x_x(:,2)` 作为单个向量输入。
修改后的代码如下:
```
function y = target(x)
if size(x, 2) ~= 2
error('x must be an Nx2 matrix');
end
y = x(:,1).*x(:,2)-1500;
end
% 假设 x_x 是一个 Nx2 的矩阵
x1 = x_x(:,1);
x2 = x_x(:,2);
values(i) = feval(@target, [x1, x2]); % 将 x1 和 x2 合并为一个 Nx2 的矩阵
```
这样就能够避免输入参数数量不足的错误了。
如下是我的malab程序,为什么报错,如何修改.:IS=0.25; % 设置前导无话段长度 wlen=200; % 设置帧长为25ms inc=80; % 求帧移 [xx,fs]=audioread('C:\Users\Administrator\Desktop\C4_2_y.wav'); % 读入数据 xx=xx-mean(xx); % 消除直流分量 x=xx/max(abs(xx)); % 幅值归一化 N=length(x); % 取信号长度 time=(0:N-1)/fs; % 设置时间 wnd=hamming(wlen); % 设置窗函数 NIS=fix((IS*fs-wlen)/inc +1); % 求前导无话段帧数 % y=enframe(x,wnd,inc)'; % 分帧 % fn=size(y,2); % 求帧数 th1=1.1; th2=1.3; [voiceseg,vsl,SF,NF,Rum]=vad_corr(x,wnd,inc,NIS,th1,th2);% 自相关函数的端点检测 fn=length(SF); frameTime=FrameTimeC(fn, wlen, inc, fs);% 计算各帧对应的时间 % 作图 subplot 211; plot(time,x,'k'); title('纯语音波形'); ylabel('幅值'); axis([0 max(time) -1 1]); subplot 212; plot(frameTime,Rum,'k'); title('短时自相关函数'); axis([0 max(time) 0 1]); xlabel('时间/s'); ylabel('幅值'); for k=1 : vsl % 标出语音端点 nx1=voiceseg(k).begin; nx2=voiceseg(k).end; subplot 211; line([frameTime(nx1) frameTime(nx1)],[-1 1],'color','r','LineStyle','-'); line([frameTime(nx2) frameTime(nx2)],[-1 1],'color','b','LineStyle','--'); subplot 212; line([frameTime(nx1) frameTime(nx1)],[-1 1],'color','r','LineStyle','-'); line([frameTime(nx2) frameTime(nx2)],[-1 1],'color','b','LineStyle','--'); end
这段 Matlab 代码报错的具体信息没有给出,不过可以看出其中使用了自己编写的 vad_corr 函数,可能是该函数出现了问题导致报错。
需要检查以下几个方面:
1. 确保 vad_corr 函数的输入参数与本代码中调用该函数的参数一致;
2. 检查 vad_corr 函数的输入信号 x 是否已经进行了幅值归一化,如果没有,可以尝试添加该步骤;
3. 检查 vad_corr 函数中使用的自相关函数计算方法是否正确;
4. 检查所有的变量命名是否正确,是否有重名的变量导致了代码出错。
如果以上步骤无法解决问题,建议提供具体的错误信息,以便更好地定位问题。
阅读全文
相关推荐











