上述代码的意思是:

  1. 读取excel文件中的数据,并进行预处理,将部分数据进行归一化处理。
  2. 将处理后的数据划分为输入数据p和目标数据t。
  3. 使用不同的参数进行神经网络训练,训练过程中设置了学习速率、动量因子、最大训练次数和训练精度等参数。
  4. 将训练好的神经网络保存起来。
  5. 读取另一个excel文件中的数据,并进行预测,预测结果也进行了反归一化处理。
  6. 将预测结果写入到excel文件中。

对于报错的问题,可能是因为输入数据p和目标数据t的维度不一致导致的。可以检查一下p和t的维度是否匹配,并根据需要进行调整。

修改后的代码如下:

clear
p1 = xlsread('E:\excel1.xlsx', 'sheet2');
for i = 1:9
    p3(:, i) = (p1(:, i) - 60) / 2500;
end
p3(:, 10) = p1(:, 11);
t1 = xlsread('E:\excel1.xlsx', 'sheet1');
t2(:, 1) = (t1(:, 1) - 20) / 40;
t2(:, 2) = (t1(:, 2) - 100) / 400;
t2(:, 3) = (t1(:, 3) - t1(:, 4) - 20) / 280;
t2(:, 4) = (t1(:, 4) - 20) / 480;
p4 = p3';
t4 = t2';
a1 = 0;

for i8 = [100, 2000, 5000, 10000, 20000]
    a1 = a1 + 1;
    for i7 = 1:i8
        p(:, i7) = p4(:, i7);
        t(:, i7) = t4(:, i7);
    end
    a2 = 0;
    for i5 = [6, 10, 16, 26, 35]
        a2 = a2 + 1;
        i10 = round(i5 * .618);
        net = newff(minmax(p), [i10, i5, 3], {'logsig', 'logsig', 'purelin'}, 'trainscg');
        net.trainParam.lr = 0.1; %学习速率
        net.trainParam.mc = 0.9; %动量因子
        net.trainParam.epochs = 10000; %最大的训练次数
        net.trainParam.goal = 1.0e-4; %训练要求精度
        net.trainParam.show = 50;
        net = init(net);
        [net, tr] = train(net, p, t); %[神经网络的名称(随意命名),展示训练记录按钮]
        a14 = strcat('E:\net', num2str(1), '.mat'); %strcat将字符型变量连接起来
        save(a14, 'net'); %把训练好的神经网络保存起来(save文件位置+名称,'要保存的神经网络结构名称')
        B1 = xlsread('E:\excel1.xlsx', 'sheet2');
        for i6 = 1:50
            B2 = zeros();
            for i2 = 1:9
                B2(1, i2) = B1(i6, i2);
            end
            B2(1, 10) = B1(i6, 11);

            for i = 1:9
                B2(1, i) = (B2(1, i) - 60) / 2500;
            end
            a12 = sim(net, B2'); %[训练出来的神经网络算法名称,要预测的变量]
            a13(1, (a1 - 1) * 250 + 50 * (a2 - 1) + i6) = a12(1, 1) * 40 + 20;
            a13(2, (a1 - 1) * 250 + 50 * (a2 - 1) + i6) = a12(2, 1) * 400 + 100;
            a13(4, (a1 - 1) * 250 + 50 * (a2 - 1) + i6) = a12(3, 1) * 480 + 20;
            a13(3, (a1 - 1) * 250 + 50 * (a2 - 1) + i6) = a12(4, 1) * 280 + 20 + a13(4, (a1 - 1) * 250 + 50 * (a2 - 1) + i6);
        end
    end
end

%end
xlswrite('E:\zuhe1.xls', a13, 'sheet1', 'A1');

请注意,上述代码没有对输入数据p和目标数据t的维度进行调整,如果维度不匹配仍然会报错。请确保p和t的维度正确

clearp1=xlsreadEexcel1xlsxsheet2;for i=19 p3i=p1i-602500;endp310=p111; t1=xlsreadEexcel1xlsxsheet1;t21=t11-2040;t22=t12-100400;t23=t13-t14-20280;t24=t14-20480;p4=p3;t4=t2;a1=0;for i8=10020005000100

原文地址: https://www.cveoy.top/t/topic/iPwN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录