En Matlab, supongamos que hay un vector cuyos elementos pueden ser complejos o reales. Me preguntaba cómo eliminar los elementos no reales y, en consecuencia, reducir el tamaño del vector. ¡Gracias y saludos!cómo eliminar el número complejo en un vector en Matlab
Respuesta
Uso los REAL y IMAG funciones:
>> x = [1+i; 4+3i; 5+6i] x = 1 + 1i 4 + 3i 5 + 6i >> real(x) ans = 1 4 5 >> imag(x) ans = 1 3 6
EDIT
Lo anterior no responde a la pregunta del cartel. Esto hace.
Utilice los FINDREAL y funciones:
>> v = [1+i; 2; 3] v = 1 + 1i 2 3 >> v(v == real(v)) ans = 2 3
¡Gracias! Pero me gustaría sacar esos números no reales del vector, no reemplazarlos con sus partes reales. – Tim
@Tim - Edité mi respuesta para reflejar su comentario. –
¡Gracias! Pero aún no es lo que pedí. Por ejemplo, v = [1 + i, 2, 3], me gustaría que v se convierta en [2,3], no [1,2,3] ni [1,0,0]. – Tim
Eso es una cosa muy inusual para preguntar. Como la parte imaginaria es un número de punto flotante, no se puede decir realmente qué número es un número real y qué número está muy cerca de un número real. Tal función no existe en Matlab ya que no está muy claro cómo sería útil para nada (no tiene mucho sentido eliminar esos números). Especificar su propósito real aquí podría ayudarlo a obtener mejores respuestas.
Si desea asegurarse de que sólo los números reales se dejan en el vector, puede utilizar el siguiente (no funciona con matrices y filas verticales, pero tienes la idea):
x = [1, 2, 3+1i, 4+2i, 5+3i, 6, 7, 8+4i, 9+0i]
z = []
for k = [1:length(x)]
if imag(x(k)) == 0
z = [z, real(x(k))]
endif
endfor
Si usted quiere guardar todos los números que están cerca de un número real, pero podría tener alguna pequeña parte imaginaria no nula, puede utilizar el siguiente:
x = [1, 2, 3+1i, 4+2i, 5+3i, 6, 7, 8+4i, 9+0.000001i]
z = []
for k = [1:length(x)]
if abs(imag(x(k))) < 0.00001
z = [z, real(x(k))]
endif
endfor
Por supuesto, si usted nos dice lo que su el criterio real es que sería mucho más fácil darle una mejor idea. ¿Estás buscando soluciones reales para algún tipo de ecuación o sistema de ecuaciones, raíces reales de un polinomio? En este caso, el primero puede perder una solución real debido al error de aproximación, y el segundo puede darle cosas que no son soluciones.
También puede evitar los ensayos en un bucle utilizando la sintaxis del vector de Matlab:
x = [1, 2, 3+1i, 4+2i, 5+3i, 6, 7, 8+4i, 9+0.000001i]
y = x(imag(x) == 0);
z = real(x(abs(imag(x)) < 0.00001));
y
debería ser [1,2,6,7]
y z
debe ser [1,2,6,7,9]
imag(x) == 0
produce un vector logical
con true
valores siempre que la condición se cumple la igualdad . x(<logical vector>)
produce un nuevo vector con solo los elementos de x
donde <logical vector>
era true
.
- 1. Cómo eliminar componentes cero en un vector en Matlab?
- 2. Filtro Gaussiano en un vector en Matlab
- 3. MATLAB - Eliminar ceros iniciales y finales de un vector
- 4. Identificación de un número complejo
- 5. return determinant vector - Matlab
- 6. ¿Cómo elimino elementos en un conjunto de índices en un vector en MATLAB?
- 7. ¿Cómo comprobar en MATLAB si un vector solo contiene ceros?
- 8. Matlab: cómo reemplazar todos los caracteres especiales en un vector?
- 9. ¿Cómo hago la integración numérica de un vector en MATLAB?
- 10. ¿Cómo iterar sobre un vector de columna en Matlab?
- 11. Cómo convertir un número entero en un vector binario?
- 12. Comprobando si un número complejo tiene NaN
- 13. ¿Parte real del número complejo?
- 14. matlab: poner un número en un círculo en un gráfico
- 15. ¿Cómo eliminar múltiples valores de un vector?
- 16. C número complejo e printf
- 17. Octave/Matlab: ¿Extiende un vector haciéndolo repetir?
- 18. Convertir una matriz de matlab en un vector
- 19. Iteración sobre un vector de funciones en MATLAB
- 20. ¿Cómo eliminar el ruido gaussiano de una imagen en MATLAB?
- 21. MATLAB: duplicar vector 'n' veces
- 22. Matlab, cómo filtrar un vector numérico por una condición?
- 23. Adjuntar un vector a una matriz MATLAB vacía
- 24. Eliminar un grupo particular de elementos en un vector?
- 25. cómo filtrar filas en un filtro complejo
- 26. ¿Cómo visualizo un gráfico complejo en .Net?
- 27. Trazar un plano basado en un vector normal y un punto en Matlab o matplotlib
- 28. Cambiar el formato de salida de número complejo
- 29. Usando vector como rango en for-loop En Matlab
- 30. Insertar valor en un punto específico en el vector o matriz de matlab
posible duplicado de [extraer el número real de la matriz en matlab] (http://stackoverflow.com/questions/13859760/extract-real-number-from-array-in-matlab) – Shai