代码运行出错,出错 Untitled (line 24),检查对函数 'labels' 的调用中是否缺失参数或参数数据类型不正确


clear
% 加载超声波数据
load('sj.mat'); % 替换为您的数据文件
 
% 使用小波进行降噪处理
num_samples = size(unnamed, 1);
denoisedSignal = zeros(size(unnamed));
for i = 1:num_samples
    denoisedSignal(i, :) = wdenoise(unnamed(i, :), 2,'Wavelet', 'db4', 'DenoisingMethod', 'UniversalThreshold');
end
 
% 使用傅里叶变换进行特征提取
num_features = 5;
features = abs(fft(denoisedSignal, [], 2));
features = features(:, 1:num_features);
 
% 归一化特征
normalizedFeatures = (features - mean(features, 1)) / std(features, 1);
 
% 准备训练和测试数据
trainRatio = 0.8;
[trainInd, valInd, testInd] = dividerand(size(normalizedFeatures, 1), trainRatio, 0,1-trainRatio);
trainData = normalizedFeatures(trainInd, :);
trainLabels = labels(trainInd);
testData = normalizedFeatures(testInd, :);
testLabels = labels(testInd);
 
% 创建并训练BP神经网络
hiddenLayerSize = 20;
net = patternnet(hiddenLayerSize);
net.divideParam.trainRatio = 1;
net.divideParam.valRatio = 0;
net.divideParam.testRatio = 0;
net.trainParam.epochs = 200;
net.trainParam.goal = 1e-5;
net.trainParam.min_grad = 1e-5;
trainTargets = ind2vec(trainLabels');
[net, tr] = train(net, trainData', trainTargets);
 
% 测试网络
predictedLabels = net(testData');
[~, predictedClass] = max(predictedLabels);
actualClass = testLabels;
accuracy = sum(predictedClass' == actualClass) / length(actualClass);
fprintf('Accuracy: %.2f%%\n', accuracy * 100);

代码运行出错,出错 Untitled (line 24),检查对函数 'labels' 的调用中是否缺失参数或参数数据类型不正确,代码如何改进,怎样解决