Revisión de los conceptos básicos de MATLAB

Tabla de contenido

1. Comando de ayuda

2. tipo de datos

3. Conjuntos y estructuras celulares.

4. Operación matricial

4.1 Definición y construcción de matriz.

4.2 Cuatro operaciones de matriz

4.3 Subíndices de matrices

5. Estructura del programa

5.1 para estructura de bucle

5.2 Estructura de sucursales

7. Operaciones básicas de dibujo.

7.1 Dibujo plano bidimensional

6.2 Dibujo estéreo 3D

7. Guarde y exporte gráficos.

8. Suplemento


El efecto de agregar ; después de la declaración es: el resultado de la operación de la línea modificada no se mostrará en la ventana de la línea de comando cuando el programa se esté ejecutando.

formato compacto: el % de espacio entre líneas de salida está configurado en modo compacto

formato suelto: % restauración al modo suelto predeterminado

Cabe señalar que formatla configuración de la función solo afectará el espacio entre líneas de salida en la sesión actual de MATLAB y no cambiará los datos o variables reales. Además, es posible que esta configuración no tenga ningún efecto en los gráficos y otros resultados que no sean de línea de comando.

1. Comando de ayuda

 

 

Por ejemplo, si desea utilizar una función relacionada con la palabra clave inversa , puede utilizar el siguiente código para encontrarla:


2. tipo de datos

%%  独占一行的注释
%   普通注释

clear all	删除所有变量
clc	删除命令行窗口内容

变量命名规则:区分大小写;长度不超过63

10/3=3.3333     /是真除法 


abs('a')  %输出97  单引号表示字符
abs('ab') %输出97 98
char(97) %输出'a'
num2str(97) %输出'a'

length('adjkasnjfka') #输出的是字符串长度

A=[1 2 3;4 5 6;7 8 9]  %定义矩阵
B=A'    %转置
C = A(:) %竖向拉长

D = inv(A) %逆矩阵(必须时方阵才能求逆矩阵)
A * D (相当于A×A的逆)
在MATLAB中,可以使用inv函数或者det函数来判断一个矩阵是否可逆。
·inv函数用于计算矩阵的逆。如果一个矩阵是可逆的,inv函数将返回该矩阵的逆矩阵。如果矩阵不可逆(奇异矩阵),inv函数将引发一个异常。
·det函数用于计算矩阵的行列式。如果一个矩阵的行列式不等于零,则说明该矩阵是可逆的;如果行列式等于零,则说明该矩阵是不可逆的。

E = zeros(10,5,3) 创建一个10行5列3维的全0矩阵
E(:,:,1) = rand(10,5)  %rand生成均匀分布的伪随机数。分布在(0~1)之间
rand(m,n,‘double’)生成指定精度的均匀分布的伪随机数,参数还可以是’single’

rand(): Genera un decimal de [0,1)

rand(m): genera una matriz cuadrada de m X m, llena de decimales aleatorios

rand(m,n): genera una matriz de m X n, llena de decimales aleatorios

rand(m,n,p): genera una matriz de m X n X p, llena de decimales aleatorios

a+(ba)*rand(): [b,a] intervalo decimal

'doble' y 'único': especifica el tipo de datos, colocado en la última posición del parámetro de rand

randi es el número entero generado y rand es un decimal en [0,1].

randi(iMax): genera un número entero de [0, iMax]

randi(iMax,m): genera una matriz cuadrada de m X m, el intervalo de valores [0, iMax]

randi(iMax,m,n): genera una matriz de m X n, el rango de valores [0,iMax]

randi(iMax,m,n,p,...): Todas las siguientes son dimensiones m X n X p X ...

randi([iMin,iMax],m,n): genera una matriz de m X n, el intervalo de valores [iMin, iMax]

randn(m): m X m

randn(m,n): m X n

randn(m,n,p): m X n X p

· Sólo randi puede especificar [iMin, iMax], ni randi ni randn.

· randi genera números enteros y rand y randn generan decimales.

· randn sólo puede especificar dimensiones.

3. Conjuntos y estructuras celulares.

Matriz de celdas: es un tipo de datos único en MATLAB. Es un tipo de matriz. Sus elementos internos pueden pertenecer a diferentes tipos de diseño . En términos de comprensión conceptual, puede considerarse como la estructura en lenguaje C y el objeto en C++. .muy similar. La matriz de celdas es un tipo de datos característico en MATLAB, que es diferente de otros tipos de datos (como el tipo de caracteres, la matriz o cadena de caracteres y los datos y matrices aritméticos generales). Su método único de acceso a datos determina sus características: da a las personas la sensación de consultar información y puede realizar un seguimiento gradual hasta que todas las variables se traduzcan en información de datos básica. La salida de su función de clase es celda (celda)

Matriz de celdas
A = celda(1,6) %Definir
A{2} = ojo(3) %Los subíndices de Matlab antes de la versión 2021 comienzan desde 1
A{5} = magic(5) %Cubo mágico: la matriz es horizontal, La suma de los números en las tres direcciones vertical u oblicuamente es siempre la misma
B = A{5}

estructura 

Tenga en cuenta que las definiciones están separadas por comas, utilice puntos al acceder.

>> books=struct('name',{
    
    {'Machine Learning','Data Mining'}},'price',[30,40])
books = 
  包含以下字段的 struct:
     name: {'Machine Learning'  'Data Mining'}
     price: [30 40]

>> books.name
ans =
  1×2 cell 数组
    'Machine Learning'    'Data Mining'

>> books.price
ans =
    30    40

>> books.name(1)
ans =
  cell
    'Machine Learning'

>> books.name{1}
ans =
Machine Learning

4. Operación matricial

4.1 Definición y construcción de matriz.

>> A=[1,2,3,4,5,6,7,8,9]%直接定义矩阵
A =
     1     2     3     4     5     6     7     8     9

>> B=1:2:9 %第二个参数为步长,不可缺省,[1,9]包含最后一个数值
B =
     1     3     5     7     9

>> C = repmat(B,3,2) %重复执行3行2列
C =
     1     3     5     7     9     1     3     5     7     9
     1     3     5     7     9     1     3     5     7     9
     1     3     5     7     9     1     3     5     7     9

>> D = ones(2,4) %生成一个2行4列的全1矩阵
D =
     1     1     1     1
     1     1     1     1

4.2 Cuatro operaciones de matriz

>> A = [1 2 3 4; 5 6 7 8]
A =
     1     2     3     4
     5     6     7     8
>> B = [1 1 2 2; 2 2 1 1]
B =
     1     1     2     2
     2     2     1     1
>> C=A+B  %对应位置相加
C =
     2     3     5     6
     7     8     8     9
>> C=A*B'  %'是转置符号
C =
    17    13
    41    37
>> C=A'*B
C =
    11    11     7     7
    14    14    10    10
    17    17    13    13
    20    20    16    16


>> A
A =
     1     2     3     4
     5     6     7     8
>> B
B =
     1     1     2     2
     2     2     1     1
>> A.*B %对应位置相乘
ans =
     1     2     6     8
    10    12     7     8
>> A./B %对应位置相除
ans =
    1.0000    2.0000    1.5000    2.0000
    2.5000    3.0000    7.0000    8.0000

>> G = A / B %相当于A*B的逆 G*B = A  G*B*pinv(B) = A*pinv(B)  G = A*pinv(B),相当于A乘B
G =
    1.8333   -0.1667
    3.1667    1.1667
>> A * inv(B)
错误使用 inv
矩阵必须为方阵。 
>> A * pinv(B)  %pinv可以不是方阵
ans =
    1.8333   -0.1667
    3.1667    1.1667

4.3 Subíndices de matrices

>> A=magic(5)
A =
    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9
>> A(2,3) %矩阵坐标从1开始数,访问第二行第二列元素
ans =
     7
>> A(2,:) %访问第二行所有元素
ans =
    23     5     7    14    16
>> A(:,3) %访问第三列所有元素
ans =
     1
     7
    13
    19
    25
>> find(A>20) %返回的是大于20的元素的下标,竖着数
ans =
     2
     6
    15
    19
    23
>> A(6)
ans =
    24

5. Estructura del programa

5.1 para estructura de bucle

>> sum=0;
>> for i=1:5
sum=sum+i*i;
end
>> sum
sum =
    55

sum=0;
for i=1:5
    cur=1;
    for j=1:i
        cur=cur*j;
    end
    sum=sum+cur;
end
disp(sum); %153

 

%打印九九乘法表
for i=1:9
    for j=1:i
        a(i,j)=i.*j;
    end
end
disp(a);

>> test01
     1     0     0     0     0     0     0     0     0
     2     4     0     0     0     0     0     0     0
     3     6     9     0     0     0     0     0     0
     4     8    12    16     0     0     0     0     0
     5    10    15    20    25     0     0     0     0
     6    12    18    24    30    36     0     0     0
     7    14    21    28    35    42    49     0     0
     8    16    24    32    40    48    56    64     0
     9    18    27    36    45    54    63    72    81

5.2 Estructura de sucursales

7. Operaciones básicas de dibujo.

7.1 Dibujo plano bidimensional

x=0:0.01:2*pi;
y=sin(x);
figure;  %建立一个幕布
plot(x,y);
title('y=sin(x)');
xlabel('x');
ylabel('y');
xlim([0 2*pi]); %设置x坐标值的范围

inserte la descripción de la imagen aquí

x=0:0.01:20;
y1=200*exp(-0.05*x).*sin(x);
y2=0.8*exp(-0.5*x).*sin(10*x);
figure;
[AX,H1,H2]=plotyy(x,y1,x,y2,'plot');%共用一个x的坐标系,在y上有两个不同的取值
%设置相应的标签
set(get(AX(1),'Ylabel'),'String','Slow Decay');
set(get(AX(2),'Ylabel'),'String','Fast Decay');
xlabel('Time(\musec)');
title('Multiple Decay Rates');
set(H1,'LineStyle','--','Color','b');
set(H2,'LineStyle',':','Color','k');

6.2 Dibujo estéreo 3D

t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t);
xlabel('sin(t)');
ylabel('cos(t)');
zlabel('t');
%hold on 
%hold off %不保留当前操作
grid on;%把图片绘制出来,加一些网格线
axis square %使整个图(连同坐标系)呈方块

Mantener significa que el eje y la imagen actuales se mantendrán sin actualizarse, listos para aceptar los gráficos que se dibujarán más adelante y coexistirán múltiples gráficos , es decir, se activará la función de retención de gráficos, los ejes de coordenadas y los gráficos actuales se mantendrá, y los gráficos dibujados a partir de ese momento se agregarán a estos gráficos y ajustarán automáticamente el rango de los ejes de coordenadas.

Mantener desactivado hace que el eje y la imagen actuales ya no tengan la propiedad de actualizarse y, cuando aparece una nueva imagen, se cancela la imagen original . Es decir, desactive la función de retención de gráficos.

esperar y esperar se utilizan relativamente.

7. Guarde y exporte gráficos.

Si la imagen generada por matlab se intercepta directamente mediante una captura de pantalla, la claridad de la imagen se verá afectada. Por lo tanto, le sugerimos que pueda utilizar los siguientes métodos para guardar y exportar gráficos.

1) como se muestra en la figurainserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

2) Opción Editar → Copiar

Elementos correspondientes ajustables

inserte la descripción de la imagen aquí

3) Editar → Propiedades de la figura

inserte la descripción de la imagen aquí

4) Archivo → Exportar configuración

inserte la descripción de la imagen aquí

Al ajustar los atributos del valor de los píxeles, como el ancho y el alto, el texto aún puede ser claro incluso si la imagen es pequeña.

Este es el final de la parte básica de Matlab, hagamos una pequeña adición ~

8. Suplemento

[x,y,z] = peaks(30); %peaks命令用于产生双峰函数或者是用双峰函数绘图
mesh(x,y,z)
grid

>> picos
z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x. 
   ^ 3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3 
   *exp(-(x+1).^2 - y.^2)  

Supongo que te gusta

Origin blog.csdn.net/m0_58086930/article/details/131939369
Recomendado
Clasificación