Red de conocimiento informático - Aprendizaje de programación - ¿Por qué Matlab cometió un error y cómo corregirlo?Antes que nada, lo que quiero decir es que matlab es diferente a otros lenguajes (yo uso más lenguajes de programación, excepto matlab , debería ser c o c ++, VB y yo también hemos estado expuestos a Delphi, y creo que la mayoría de las personas en el foro (versión de Matlab) son similares (si tienes la idea de "usar ideas de otros lenguajes"). "en matlab", entonces creo que, incluso si el programa se ejecuta correctamente, será difícil. Si tienes la idea de "aplicar ideas de otros lenguajes a matlab", entonces creo que incluso si el programa se ejecuta correctamente, será difícil captar la esencia de matlab y desempeñar su papel. Entonces, si desea dominar un idioma y una herramienta para que le sirva de manera más efectiva, espero que este artículo le resulte útil. Léalo si desea utilizar matlab como afiliado de VC, es decir; Si no desea gastar demasiada energía en Matlab, solo desea usar Matlab para completar tareas que no se pueden completar con VC o que son difíciles de completar, entonces al menos debería leer este artículo. Matlab es un software basado en operaciones matriciales. Esto probablemente sea algo bien conocido. Sin embargo, cuando lo usan (es decir, cuando programan), muchas personas (especialmente los principiantes) a menudo no notan este problema. incluyendo bucles while) están en todas partes... Esto no sólo es un desperdicio (no aprovechar las fortalezas de Matlab), sino que también es una pérdida de su valioso tiempo. Esto también se menciona en el artículo "Consejos de MATLAB" de MVH, por lo que no lo repetiré porque también hay instrucciones relevantes en la "Ayuda" de Matlab. Lo que quiero decir aquí es que los principiantes tienden a notar este problema al inicializar matrices y saben cómo usar matrices en lugar de bucles para asignar valores, pero por lo demás ignoran fácilmente este problema, o todavía no se han deshecho del modo de pensamiento C++. Por ejemplo, el siguiente código fue escrito por uno de mis jóvenes. Creo que ha estado expuesto a MATLAB durante 2 o 3 años (quiero explicar aquí que 2 o 3 años de exposición no significa que tratará con MATLAB todos los días. día. También No, solo se usa continuamente durante un cierto período del año), pero aún surgen problemas similares: J = 0 lt = size(imf1,2); (imf1(i))1) J = 1; break end end El código anterior solo logra una cosa: verificar si el valor absoluto de un punto en la señal imf1 (un vector) es mayor que 1. Obviamente, esto se basa en la idea. de C++. En matlab, dos declaraciones son suficientes (por supuesto, se pueden combinar en una): q = find(imf11); J = ~isempty(q); Otro ejemplo: for j = 1:num imf1(start1+j) = 2*li1(j+1) - imf1(start1+j) Este es un problema de flip-flop simétrico y se puede expresar de manera sucinta mediante la siguiente declaración; : imf1(inicio1+1:inicio1+núm) = 2*li1(2:núm+1) - imf1(inicio1+1) - imf1(inicio1+1) = 2*li1(2:imf1(inicio1+1) - imf1 (start1+1) = 2*li1(2:num+1) imf1(start1+1:start1+num); Entonces, si eres un novato, puedes escribir código con bucles primero (basado en ideas de C++) y luego. mire Vea si puede mejorar el código usando el lenguaje matlab (basado en ideas de matrices). Por supuesto, la premisa es que está familiarizado con algunas funciones proporcionadas por matlab. Estas funciones se pueden buscar como "funciones utilizadas en la vectorización" en matlab. "Ayuda".

¿Por qué Matlab cometió un error y cómo corregirlo?Antes que nada, lo que quiero decir es que matlab es diferente a otros lenguajes (yo uso más lenguajes de programación, excepto matlab , debería ser c o c ++, VB y yo también hemos estado expuestos a Delphi, y creo que la mayoría de las personas en el foro (versión de Matlab) son similares (si tienes la idea de "usar ideas de otros lenguajes"). "en matlab", entonces creo que, incluso si el programa se ejecuta correctamente, será difícil. Si tienes la idea de "aplicar ideas de otros lenguajes a matlab", entonces creo que incluso si el programa se ejecuta correctamente, será difícil captar la esencia de matlab y desempeñar su papel. Entonces, si desea dominar un idioma y una herramienta para que le sirva de manera más efectiva, espero que este artículo le resulte útil. Léalo si desea utilizar matlab como afiliado de VC, es decir; Si no desea gastar demasiada energía en Matlab, solo desea usar Matlab para completar tareas que no se pueden completar con VC o que son difíciles de completar, entonces al menos debería leer este artículo. Matlab es un software basado en operaciones matriciales. Esto probablemente sea algo bien conocido. Sin embargo, cuando lo usan (es decir, cuando programan), muchas personas (especialmente los principiantes) a menudo no notan este problema. incluyendo bucles while) están en todas partes... Esto no sólo es un desperdicio (no aprovechar las fortalezas de Matlab), sino que también es una pérdida de su valioso tiempo. Esto también se menciona en el artículo "Consejos de MATLAB" de MVH, por lo que no lo repetiré porque también hay instrucciones relevantes en la "Ayuda" de Matlab. Lo que quiero decir aquí es que los principiantes tienden a notar este problema al inicializar matrices y saben cómo usar matrices en lugar de bucles para asignar valores, pero por lo demás ignoran fácilmente este problema, o todavía no se han deshecho del modo de pensamiento C++. Por ejemplo, el siguiente código fue escrito por uno de mis jóvenes. Creo que ha estado expuesto a MATLAB durante 2 o 3 años (quiero explicar aquí que 2 o 3 años de exposición no significa que tratará con MATLAB todos los días. día. También No, solo se usa continuamente durante un cierto período del año), pero aún surgen problemas similares: J = 0 lt = size(imf1,2); (imf1(i))1) J = 1; break end end El código anterior solo logra una cosa: verificar si el valor absoluto de un punto en la señal imf1 (un vector) es mayor que 1. Obviamente, esto se basa en la idea. de C++. En matlab, dos declaraciones son suficientes (por supuesto, se pueden combinar en una): q = find(imf11); J = ~isempty(q); Otro ejemplo: for j = 1:num imf1(start1+j) = 2*li1(j+1) - imf1(start1+j) Este es un problema de flip-flop simétrico y se puede expresar de manera sucinta mediante la siguiente declaración; : imf1(inicio1+1:inicio1+núm) = 2*li1(2:núm+1) - imf1(inicio1+1) - imf1(inicio1+1) = 2*li1(2:imf1(inicio1+1) - imf1 (start1+1) = 2*li1(2:num+1) imf1(start1+1:start1+num); Entonces, si eres un novato, puedes escribir código con bucles primero (basado en ideas de C++) y luego. mire Vea si puede mejorar el código usando el lenguaje matlab (basado en ideas de matrices). Por supuesto, la premisa es que está familiarizado con algunas funciones proporcionadas por matlab. Estas funciones se pueden buscar como "funciones utilizadas en la vectorización" en matlab. "Ayuda".

Puede buscar "funciones utilizadas en la vectorización" en la "Ayuda" de Matlab para encontrar algunas de estas funciones, o puede encontrar libros relacionados (¿no es así?). Creo que hay tres formas principales de mejorar las habilidades de programación en Matlab: 1. Ver la ayuda 2. Vaya a foros, busque publicaciones y publique preguntas para hacerle a la gente 3. Mire los programas de otras personas, especialmente los de expertos. Por supuesto, como todos los lenguajes de programación, "3 puntos para los libros de texto, 7 puntos para los". ordenadores". Por supuesto, al igual que todos los lenguajes de programación, "30% libros de texto, 70% prácticos", hay que hacerlo, no sólo leerlo. Pensar más, pensar más e intentar más es el camino correcto. Los siguientes conocimientos se recopilan a partir de la programación diaria y la lectura de publicaciones de otras personas (se agregan continuamente): 1. Todas las operaciones de Matlab se basan en matrices y también proporciona los elementos de operación correspondientes, es decir, agregar "puntos" delante del operador. Por ejemplo: a = [1,2;3,4] a = 1 2 3 4 b = [-1,-2;-3,0] b = -1 -2 -3 0 a * b ans = -7 - 2 -15 -6 a . * b ans = -1 -4 -9 0.