Matlab - encontrar plano que ajuste una matriz

 
Vista:

encontrar plano que ajuste una matriz

Publicado por Harto de caras (2 intervenciones) el 11/11/2004 18:39:01
Tengo una matriz 2d de 20x20 con datos, y quiero encontrar el plano que mejor ajuste a esos datos(es como encontrar la función que aproxima un conjunto de puntos).
He probado con fit, pero parece que no funciona con matrices, sino sólo con datos 1d, y interp2 no ha servido de mucho.

Como lo calculo?, seguro que es una chorrada pero no la encuentro.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Ajuste de plano 3D a una matriz de datos

Publicado por Alejandro (145 intervenciones) el 05/10/2023 23:42:48
No es una chorrada en absoluto, y es comprensible que pueda resultar un poco confuso. Para ajustar un plano 3D a una matriz de datos, puedes utilizar la función `fit` de Matlab con algunos ajustes. Aquí hay un ejemplo de cómo podrías hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
% Crear datos de ejemplo (reemplazar con tu propia matriz de datos)
[X, Y] = meshgrid(1:20, 1:20);
Z = randn(20, 20); % Matriz de datos de ejemplo
 
% Convertir las matrices en vectores para fit
x = X(:);
y = Y(:);
z = Z(:);
 
% Ajuste de plano con la función fit
[xData, yData, zData] = prepareSurfaceData(x, y, z);
modelo = fit([xData, yData], zData, 'poly11');
 
% Evaluar el modelo en la malla original
Z_ajustado = feval(modelo, X(:), Y(:));
 
% Visualización
figure;
scatter3(x, y, z, 'filled');
hold on;
surf(X, Y, reshape(Z_ajustado, size(X)), 'FaceAlpha', 0.5);
title('Ajuste de Plano 3D a una Matriz de Datos');
xlabel('X');
ylabel('Y');
zlabel('Z');
legend('Datos', 'Plano Ajustado');
hold off;

En este ejemplo, se genera una matriz de datos de ejemplo (`Z`), y luego se convierten las coordenadas (`X`, `Y`) y los valores de la matriz en vectores (`x`, `y`, `z`). Luego, se utiliza `fit` para ajustar un plano de primer orden (`poly11`) a los datos.

La función `feval` se utiliza para evaluar el modelo en la malla original y visualizar el resultado con `scatter3` y `surf`.

Ten en cuenta que este es solo un ejemplo básico y puede necesitar ajustes según tus datos específicos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar