Red de conocimiento informático - Material del sitio web - ¡¡¡Cómo usar matlab para encajar datos discretos en ecuaciones, esperando en línea!!!!

¡¡¡Cómo usar matlab para encajar datos discretos en ecuaciones, esperando en línea!!!!

Estoy de acuerdo con la respuesta del Piso 1, use cftool. Pero sin conocer la forma de la función, el ajuste no es bueno.

Existen varios métodos de ajuste de funciones, que no están incluidos en cftool, pero que se utilizan comúnmente en la investigación científica. Puede probarlos, como la aproximación de Padé, la red de regresión generalizada, el componente principal, etc. Red de regresión generalizada, descomposición de componentes principales, etc.

Proporcionarle una red de avance de BP entrenada con regularización bayesiana y permitirle probarla

El valor de retorno funObj es la ecuación adecuada

-- ---- ------ Línea divisoria-----------------

función funObj = netFit(x, y)

maxID= 1; toma 1 aquí. Por lo tanto, los resultados serán diferentes cada vez que lo ejecute y, si toma un valor mayor, los resultados serán básicamente los mismos.

El manual de Matlab recomienda entrenar múltiples redes para obtener un promedio, por ejemplo maxID=100.

Se puede acelerar en paralelo

Consulte el tren de documentación --gt; useParallel, useGPU.

net = feedforwardnet(15); Este es un valor aleatorio, pero aún tiene algún significado. .. .

net.trainFcn = 'trainbr';?

net.divideParam.trainRatio = 0,7;

net.divideParam.valRatio = 0,3;

net.divideParam.testRatio = 0;

net = configurar( net, x, y

net.trainParam.showWindow = 0; >

h = waitbar(0,'Entrenamiento con regularización bayesiana 0');

netCollect = cell(maxID, 1

para netID=1: maxID

net = init(net);

net = train(net, x, y

waitbar(netID/maxID, h,...). .. sprintf('Entrenamiento con regularización bayesiana 4.1f', netID/maxID*100));

netCollect{netID} = net;

end

eliminar( h); ...

funObj = @(x)evalNet(netCollect, x);

xfit = linspace(min(x), max(x), 100

yfit = funObj(xfit);

figura(10); plot(xfit, yfit, 'r-', x, y, 'ok');

legend('Línea ajustada', 'Datos') xlabel('X', 'FontSize', 14); ylabel('Y', 'FontSize', 14 title('maxID= 100')

fin

función y = evalNet(netCollect, x)

NNet = longitud(netCollect);

y = ceros(tamaño (x ));

para netId=1: NNet

net = netCollect{netId}

y = y net(x); >

fin

y = y/NNet;

fin