Notas de estudio de MATLAB Guo Yanfu de la Universidad Nacional de Taiwán (Parte 1)

Este artículo son las notas de estudio del tutorial MATLAB P2~P4 de la Universidad Nacional de Taiwán Guo Yanfu, que incluye código y ejercicios extracurriculares.

Tabla de contenido

1. Operación básica y entrada de matriz

1. Ejercicios sencillos

2. funciones de incrustación (función de incrustación)

3.variables (variables)

 4. formato (formato)

 5. Terminal de línea de comandos

6. Arreglos (vectores y matrices)

7. Indexación matricial

 8. Ejercicio de sustitución de matrices

 9. operador de dos puntos (dos puntos)

 10. Concatenación de matrices

 11. Manipulación de matriz (operación de matriz cuatro operaciones)

12.alguna matriz especial (alguna matriz especial)

13.algunas funciones relacionadas con matrices (algunas funciones relacionadas con matrices)

Dos programas estructurados y funciones personalizadas

1. Guión de MATLAB

2.flujo de script (flujo de script)

3. Practica 1~999 suma continua

4. bucle for

 5. pre-asignación de espacio a las variables (pre-asignación de espacio para variables)

 6. Practica convertir la matriz A en B

 7. descansoEditar

 8.Consejos para escribir guiones (habilidades para escribir guiones)

 9.scripts vs funciones (script vs función)Editar

 10. funciones definidas por el usuario

11.funciones con múltiples entradas y salidas (funciones con múltiples entradas y salidas)

 12. Ejercicio de temperaturaEditar

 13. Variable predeterminada de la función

 14. identificadores de función (identificadores de función, similares a los punteros del lenguaje c)

 Acceso a archivos de tres variables (variable)

1 tipos de datos de MATLAB

 2. Escriba conversiónEditar

 3. Cuerda

 4. matriz

 5.operaciones y asignaciones lógicas (operaciones y asignaciones lógicas)

 6. Ejercicio de inversión de cuerdas

7.estructura (estructura)

8. Ejercicio: Encuentra el tercer grado de 90 de Ann Lane. Obviamente, este problema no es difícil.

9. funciones de estructura

 10. estructura de anidamiento (estructura de anidamiento)

 11. La matriz de celdas (tupla) usa llaves, hay dos formas:

12. Practica creando una tupla B

 13. acceder a la matriz de celdas (obtener tupla)

 14. funciones de matriz de celdas (función de tupla)

 15. matriz multidimensional

 16. remodelar

 17. Practica la remodelación

 18. Comprobar estado

 19. Acceso a archivos

 20.guardar() y cargar()

21. Solo almacena una variable específica

 22. lectura de archivos de Excel

 23. escritura de archivos de Excel

 24. Obtener texto en una hoja de cálculo de Excel

 25. Practica guardando la partitura en la cabecera

 26. Entrada/salida de archivos de bajo nivel

 27. Escribe el valor del pecado

 28. Leer archivo


1. Operación básica y entrada de matriz

1. Ejercicios sencillos

1.
>> cos(((1+2+3+4)^3/5)^0.5)

ans =

   -0.0050


2.
>> sin(sqrt(pi))+log(tan(1))

ans =

    1.4228


3.
>> 2^(3.5*1.7)

ans =

   61.8199


4.
>> exp(sin(10))

ans =

    0.5804

2. funciones de incrustación (función de incrustación)

Si la fórmula es demasiado larga, puede usar una variable para almacenar parte de ella y luego calcularla.

>> cos(pi)

ans =

    -1

>> sin(ans)

ans =

   -0.8415

>> sin(cos(pi))

ans =

   -0.8415

3.variables (variables)

① Hay una diferencia en el caso de nombres de variables

② No puede haber letras al comienzo de la variable, y puede haber números al comienzo de la variable.

 Compruebe el tipo de variable: haga doble clic en la variable en el espacio de trabajo para mostrar el tipo.

 O de quién (quién verifica las variables existentes, quién verifica la información relacionada con las variables)

 Variables especiales: palabras clave

 respuesta: respuesta, ij: número complejo, inf: infinito, eps: número muy pequeño, NaN: no número, pi: pi

 Ver qué palabras clave están disponibles

 Convierta la función en una variable: asigne una cadena a cos y emita el octavo carácter correspondiente. En este momento, la prioridad de las variables es mayor que la de las funciones.

>> cos='This string.';
>> cos(8)

ans =

    'r'

Elimine variables y borre todo el contenido del espacio de trabajo con un solo borrado (borrar con cuidado)

 4. formato (formato)

Salida de diferentes longitudes decimales según diferentes tipos

 long: muy largo, shortE, longE: símbolos científicos (e+00 es 10 elevado a 0), bank: dos decimales, hex: hexadecimal, rat: convertido a un número racional

Preguntas de práctica:

No es difícil, obviamente 1,d

 

 5. Terminal de línea de comandos

 Agregar un punto y coma después del código no devuelve el resultado, presione la flecha hacia arriba para volver al comando anterior

 clc: limpiar la pantalla

6. Arreglos (vectores y matrices)

Vector de fila (separado por espacios), vector de columna (separado por punto y coma).

a*b producto interior, b*a producto exterior.

 Introduzca una matriz, separada por espacios y separada por punto y coma.

>> A=[1 21 6; 5 17 9; 31 2 7]

A =

     1    21     6
     5    17     9
    31     2     7

7. Indexación matricial

Genere un vector de fila o un vector de columna, solo genere el número directamente.

Cuando quiera ver el valor de la matriz A(X,Y): A es la matriz, X es la fila X, Y es la columna Y, es decir, la Y de la fila X. Si usa A(X) para buscar, siga el principio de arriba a abajo y de izquierda a derecha, primero verifique el vector de la primera columna a la izquierda y luego verifique el vector de la segunda columna a la izquierda.

Todavía ingrese los siguientes 5 comandos y observe los resultados.

 Debe enfatizarse que los primeros corchetes en la quinta instrucción representan vectores de fila y los segundos corchetes representan vectores de columna. Es decir: los valores de la primera fila y la tercera fila, la primera columna y la tercera columna se obtienen como matriz de segundo orden.

 8. Ejercicio de sustitución de matrices

Ideas para resolver problemas: la segunda matriz es fácil de reemplazar, y el blogger de la tercera matriz usa el método anterior para reemplazar rápidamente los cuatro valores. Para eliminar la tercera fila, solo necesita establecer el valor de la tercera fila para que esté vacío de forma predeterminada.

 9. operador de dos puntos (dos puntos)

 A=[j:i:k] j es el valor inicial, i es la diferencia aritmética y k es el número final. Si la diferencia aritmética es 1, simplemente omita i.

 

Entre ellos, el tipo de la última B es doble, y el tipo de str es str

 

 10. Concatenación de matrices

F=[AB] significa que la fila permanece sin cambios y la columna aumenta. F=[A;B] significa que las columnas no cambian y las filas aumentan.

 

 11. Manipulación de matriz (operación de matriz cuatro operaciones)

Las dos operaciones matriciales son las siguientes:

 

 Las operaciones matriciales y constantes son simples, por lo que no las repetiré aquí. Entre ellos, A^a es A*A en lugar de A.^a, y A' se intercambia a lo largo de la diagonal, es decir, se transpone.

12.alguna matriz especial (alguna matriz especial)

linspace: Instrucciones de cálculo uniformes. linspace (x, y, z) comienza en x, termina en y y tiene z elementos en el medio.

eye(n): matriz nxn con 1 en la diagonal.

zeros(n1.n2): matriz n1xn2 con todos los 0 elementos.

diag(): Una matriz con números conocidos en la diagonal.

rand(): matriz aleatoria.

13.algunas funciones relacionadas con matrices (algunas funciones relacionadas con matrices)

max(A) encuentra el valor máximo de cada vector de columna de A y devuelve un vector de fila, y min(A), sum(A) y mean(A) son iguales. max(max(A)) devuelve una constante.

sort(A) ordena cada vector de columna, y sortrows(A) cada fila cambia en el orden del tamaño del primer vector de columna.

size(A) es n*n, y length(A) es el valor que sea mayor, se devolverá el vector de fila o el vector de columna. encuentra (A==5), el valor numérico de A es 5.

Dos programas estructurados y funciones personalizadas

1. Guión de MATLAB

Escriba el primer guión de dibujo del pecado y el resultado es una imagen en movimiento.


for i=1:10
    x=linspace(0,10,101)
    plot(x,sin(x+i));
    print(gcf,'-deps',strcat('plot',num2str(i),'.ps'));
end

matlab % es un comentario, %% es una sección que explica una depuración simple. El script se puede guardar y desaparecerá después de escribir la línea de comando. Se recomienda usar el script.

2.flujo de script (flujo de script)

de arriba hacia abajo

 programación estructurada

 La diferencia es ~= no! =

 La gramática debe coincidir con la instrucción final.

 Ejecute el código de la derecha en el script y el resultado aparecerá en la ventana de la línea de comandos.

a=3;
if rem(a,2)==0  %reminder余数
    disp('a is even')
else
    disp('a is odd')
end

input_num=1;
switch input_num
    case -1
        disp('negative 1')
    case 0 
        disp('zero')
    case 1 
        disp('positive 1')
    otherwise
        disp('other value')
end

 

n = 1;
while prod(1:n) < 1e100 % product阶乘 10的100次方
    n = n + 1;
end

3. Practica 1~999 suma continua

n = 1;
sum = 0;
while n < 1000
    sum = sum + n;
    n = n + 1;
end
disp('1+2+3+...+999=')
disp(sum)

4. bucle for

for n=1:10
    a(n)=2^n;
end
disp(a)

Si necesita borrar una variable para reasignarla, como borrar una

Si n se cambia a un número impar, n=(1:2:10 no funciona), porque el número par de n se convertirá en 0 en lugar de no existir.

 5. pre-asignación de espacio a las variables (pre-asignación de espacio para variables)

tic es el comienzo del tiempo, toc es el final del tiempo

 Usando %% para ejecutar dos programas, puede encontrar que la asignación previa del programa B ahorra mucho tiempo.

%%
tic
for ii = 1:2000
    for jj=1:2000
        A(ii,jj) = ii + jj;
    end
end
toc


%%
tic
A = zeros(2000, 2000);
for ii = 1:size(A:1)  %返回矩阵对应行数
    for jj = 1:size(A,2) %返回矩阵对应列数
        A(ii,jj) = ii +jj;
    end
end
toc

 6. Practica convertir la matriz A en B

Sea matriz B = matriz A y cambie los números negativos en B a números no negativos.

A=zeros(3,3);
B=zeros(3,3);
A=[0 -1 4; 9 -14 25; -34 49 64];
B=A;
disp(B)
for n=(1:9)
    if B(n)<0
        B(n) = -B(n);
    end
end

disp(B)

 

 7.descanso

 8.Consejos para escribir guiones (habilidades para escribir guiones)

Borrar variables e imágenes antes de ejecutar el programa. clc es para borrar la pantalla. ;No mostrar los resultados del programa. ... número de nueva línea (el código es demasiado largo, la siguiente línea continúa el código anterior). La línea de comando ctrl+c detiene el programa.

 9. scripts vs funciones (script vs función)

 Ver funciones integradas promedio


>> edit(which('mean.m'))
>> 

 10. funciones definidas por el usuario

Primera función - caída libre

Guarde la función en el script (se requiere la multiplicación de puntos; de lo contrario, no se pueden generar los dos conjuntos de matrices)

function x = freebody(x0, v0, t)
% calculation of free falling
% x0: initial displacement in m
% v0: initial velocity in m/sec
% t: the elapsed time in sec
% x: the depth of falling in m
x = x0 +v0.*t + 1/2*9.8*t.*t;

Ingrese en la ventana de línea de comando

11.funciones con múltiples entradas y salidas (funciones con múltiples entradas y salidas)

 Utilice [] cuando haya varias salidas.

 12. Ejercicios de temperatura

 1. Solicite una temperatura Fahrenheit y calcule la temperatura Celsius correspondiente. y muestra la temperatura en Celsius, la función se ejecuta hasta que la salida no es un número.

Aquí hay algunos puntos en los que es fácil cometer errores: ①No es necesario escribir y=F2C, de lo contrario, se generará ans después de presionar Enter, ②use input para ingresar el valor de entrada, ③disp solo puede generar una variable, así que use una matriz [ ], ④Necesita convertir Celsius C a cadena, use num2str.

function F2C
n=1;
while n==1
    F= input('Temperature in F:');
    if isempty(F)
        break;
    else
        C = 5 .*(F-32)./9;
        disp(['==>Temperature in C:',num2str(C)])
        %disp(['==>Temperature in C:',num2str(C,'%.2f')]) %num2str数字转字符,%.2f小数点后两位
    end

end

 13. Variable predeterminada de la función

El significado aquí es: si solo se ingresan 2 parámetros al llamar a pillar, la altura predeterminada es 1. nargin es una función del número real de variables de entrada y varargin es una lista de parámetros de entrada variables.

 14. identificadores de función (identificadores de función, similares a los punteros del lenguaje c)

 

 Acceso a archivos de tres variables (variable)

1 tipos de datos de MATLAB

 2. Tipo de conversión

 

 3. Cuerda

 unit16 se convierte en código ASCII.

 4. matriz

 Entre ellos, s1 y s2 no se pueden combinar en una matriz porque las dimensiones son diferentes.

 5.operaciones y asignaciones lógicas (operaciones y asignaciones lógicas)

Para preguntas extendidas adicionales, la forma más fácil debería ser llamar directamente a la función strcmp

 6. Ejercicio de inversión de cuerdas

Aquí hay algunos puntos a tener en cuenta: ①La entrada s1 debe definirse como un tipo de carácter.

function reverse 
s1 = input('give a string:','s');
n = strlength(s1);
for i=1:n
    s2(n-i+1) = s1(i);
end
disp(char(s2));

7.estructura (estructura)

>> student.name = 'John Doe';
student.id = '[email protected]';
student.number = 301073268;
student.grade = [100, 75, 73; ...
                 95, 91, 85.5;...
                 100, 98, 72];

student

 

 Si hay más de un compañero de clase, use corchetes para guardarlos.

>> student(2).name = 'Ann Lane';
student(2).id = '[email protected]';
student(2).number = 301078853;
student(2).grade = [95, 100, 90; ...
                 95, 82, 97;...
                 100, 85, 100];
>> student

8. Ejercicio: Encuentra el tercer grado de 90 de Ann Lane. Obviamente, este problema no es difícil.

9. funciones de estructura

rmfield es para eliminar la estructura, fieldname toma el nombre del atributo de la estructura y rmfield es para eliminar un determinado atributo de la estructura y generar otra estructura.

 

 10. estructura de anidamiento (estructura de anidamiento)

Un valor de propiedad de una estructura puede ser una estructura.

 Entre ellos, la estructura A tiene dos atributos, a saber, data y nest, y nest es otra estructura, incluidos los atributos testnum, xdata e ydata.

>> A = struct('data',[3 4 7; 8 0 1], 'nest',...
      struct('testnum', 'Test 1',...
      'xdata', [4 2 8],'ydata', [7 1 6]));
A(2).data = [9 3 2; 7 6 5];
A(2).nest.testnum = 'Test 2';
A(2).nest.xdata = [3 4 2];
A(2).nest.ydata = [5 0 9];
A.nest

 11. La matriz de celdas (tupla) usa llaves, hay dos formas:

>> A(1,1)={[1 4 3; 0 5 8; 7 2 9]};
A(1,2)={'Anne Smith'};
A(2,1)={3+7i};
A(2,2)={-pi:pi:pi};
A

A =

  2×2 cell 数组

    {3×3 double        }    {'Anne Smith'      }
    {[3.0000 + 7.0000i]}    {[-3.1416 0 3.1416]}

>> 

12. Practica creando una tupla B

 Aquí la cuarta parte es una celda, por lo que se debe anidar una llave.

>> B(1,1)={['This is the first cell']};
B(1,2)={[5+j*6 4+j*5]};
B(2,1)={[1 2 3; 4 5 6; 7 8 9]};
B(2,2)={
   
   {'Tim', 'Chris'}};
B

 13. acceder a la matriz de celdas (obtener tupla)

 Si observa el contenido de la matriz de celdas, use llaves

Si desea extraer el valor en la matriz, use ()

 

 14. funciones de matriz de celdas (función de tupla)

cell2struct y conversión de celdas cell2struct

 

 En la matriz del cubo mágico, la suma de cada fila, cada columna y cada diagonal es igual. mat2cell se divide en tres filas y las columnas no cambian.

 15. matriz multidimensional

fila, columna, capa.

 Conecta A y B con cat()

 

 16. remodelar

>> A = {'James Bond', [1 2; 3 4; 5 6];pi, magic(5)}

A =

  2×2 cell 数组

    {'James Bond'}    {3×2 double}
    {[    3.1416]}    {5×5 double}

>> c = reshape(A,1,4)

c =

  1×4 cell 数组

    {'James Bond'}    {[3.1416]}    {3×2 double}    {5×5 double}

>> 

 17. Practica la remodelación

>> A = [1:3; 4:6]

A =

     1     2     3
     4     5     6

>> C = reshape(A,3,2)

C =

     1     5
     4     3
     2     6

>> 

 18. Comprobar estado

 19. Acceso a archivos

 20.guardar() y cargar()

guardar es almacenar y cargar es recuperar datos. Después de agregar -ascii, abra el archivo con la nota y podrá ver el valor

 Guarde los dos archivos en la ruta roja.

 algarabía

puede ser visto

 

Lea el archivo después de borrarlo, puede ver un en el espacio de trabajo

 Ascii necesita agregar -ascii para obtener datos

>> load('mydata2.mat','-ascii')

21. Solo almacena una variable específica

Después de buscar, descubrí que no había una manera particularmente buena, así que adopté el método simple, primero establecí el valor que se guardaría y luego lo almacené directamente. El primer valor de mydata2 es 16, así que guárdelo.

 22. lectura de archivos de Excel

 Crear excel en el directorio especificado

Los dos métodos leen lo mismo, el primero omite automáticamente la parte no numérica.

 

 23. escritura de archivos de Excel

 Calcular el promedio

Entre ellos, "es transponer, porque matlab calcula con vectores de columna, y requerimos que se transponga el valor promedio de cada persona. En este momento, el valor promedio es en realidad un vector de columna, por lo que se requiere una transposición después de completar el cálculo.

Escriba el valor promedio M en la posición correspondiente.


>> M = mean(Score')';
xlswrite('04Score.xlsx', M, 1,'E2:E4');
xlswrite('04Score.xlsx', {'Mean'}, 1, 'E1');

Escribir automáticamente el promedio

Calcular la desviación estándar

 SD=std(Score,0,2);
xlswrite('04score.xlsx',SD,1,'F2:F4');
xlswrite('04score.xlsx',{'标准差'},1,'F1');

 24. Obtener texto en una hoja de cálculo de Excel

Puede devolver números y encabezados.

 

El encabezado es la celda

 25. Practica guardando la partitura en la cabecera

 26. Entrada/salida de archivos de bajo nivel

El archivo debe tener un fid antes de que matlab pueda procesarlo. También hay un indicador de qué parte del archivo se procesa

También se requieren permisos para abrir el archivo.

 27. Escribe el valor del pecado

 

 %5.3f tiene un total de 5 valores, 3 de los cuales son puntos decimales

 
>> x = 0:pi/10:pi; y = sin(x); fid = fopen('sinx.txt', 'w');
for i = 1:11
    fprintf(fid,'%5.3f %8.4f\n', x(i), y(i));
end
fclose(fid); type sinx.txt

 28. Leer archivo

Debido a que el nombre es un tipo de carácter, lea 5 caracteres hasta el final, el primer carácter es J, el segundo es o, y así sucesivamente.

La primera ejecución es la primera línea y la segunda ejecución es la segunda línea.

>> fid = fopen('04asciiData.txt','r');i=1;
while ~feof(fid)
   name(i,:) = fscanf(fid, '%5c', 1);
   year(i) = fscanf(fid, '%d', 1);
   no1(i) = fscanf(fid, '%d', 1);
   no2(i) = fscanf(fid, '%d', 1);
   no3(i) = fscanf(fid, '%g', 1);
   no4(i) = fscanf(fid, '%g\n');
   i = i+1;
end
fclose(fid);

 Puede ver que hay muchas más variables en el espacio de trabajo.

 

 Lo anterior es la primera parte de las notas del tutorial de MATLAB Guo Yanfu de la Universidad Nacional de Taiwán ~

Todos los códigos y ejercicios escritos por el profesor están aquí ~ Los cursos de seguimiento se actualizarán a continuación.

Supongo que te gusta

Origin blog.csdn.net/qq_43604183/article/details/131492253
Recomendado
Clasificación