%% arreglos clearvars close all; clc; %este programa demuestra los aspectos rincipales del usi de %arreglos de una dimension 1D o vectores %% arreglos tipo fila - horizontal %para generar arrelo tipo fila usamos el nombre de %la variable, el signo de asignacion y el parentesis cuadrado %los elementos se separaran por espacio o coma A_fila = [1.1,2.2, 6.7,8.9]; V_fila = [21 43 645 70 24 11]; %% arreglos tipo columna - vertical %para generar un arreglo tipo columna usamos el nombre de %la variable, el signo de asignacion y el parentesis cuadrado %los elementos se separaran por punto y coma B_columna = [4; 5.5; 77; 12]; %no mezclar filas y columnas en un arreglo %C_otro = [ 1 4 ; 66; 9,1;23]; %% indexacion %permite trabajar con elementos del arreglo en forma aislada x1 = A_fila(2); x2 = B_columna(4); %podemos generar una varible numero natural para indexar nn = 3; x3 = A_fila(nn); %nn la variable de indexacion no debe ser negativa, numero de punto %flotantey/o cero; ademas no debe exeder el tamaño del arreglo %podemos operar indirecrtamente x4 = x1 + x2 + x3; %podemos operar directamente x5 = A_fila(1) + B_columna(4); %podemos operar usando estructura iterativa for k = 1:4 algo(k) = A_fila(k)^3 - sqrt( B_columna(5-k) ); end; %A_fila(k)^3 el indice del arreglo va subiendo (1),(2),(3),(4) %sqrt( B_columna(5-k) ) el indice del arreglo va bajando (4),(3),(2),(1) %podemos usar operaciones aritmeticas en los indices con cuidado %esta es una forma poco eficiente de crear un nuevo arreglo ver el warning %% mas datos N = 1001; for n = 1:N%-------------------%inicio for t(n) = (n-1)/N; %arreglo de numeros que va de cero a 1 f1(n) = sin(20*pi*t(n)); %arreglo de sin(x) f2(n) = cos(4*pi*t(n)); %arreglo de cos(x) %podemos usar estructuras selectivas if f1(n) > 0%------inicio if f3(n) = 1; else f3(n) = -1; end;%--------------fin if end;%-------------------------%fin for %% prealocar %es un anglisismo que significa el reservar el esparcio en RAM %a fin de ubicar de manera previa los valores de un arreglo %esto trae como consecuencia una mayor eficiencia y rapidez f4(1:N) = 0; %prealocamos con ceros un arreglo fila f5(1:N,1) = 0; %prealocamos con ceros un arreglo columna %podemos usar la funcion zeros f6 = zeros(1,N); %prealocamos con ceros un arreglo fila f7 = zeros(N,1); %prealocamos con ceros un arreglo columna %% operaciones entre arreglos del mismo tamaño de forma sintética %deben tener el mismo tamaño y ambos ser arreglos fila %deben tener el mismo tamaño y ambos ser arreglos columna w1 = f1 + f2; %suma elmento a elemento w2 = f1 - f2; %resta elmento a elemento w3 = f1.*f2; %multiplica elmento a elemento w4 = f1./f2; %multiplica elmento a elemento %estas operaciones se pueden explicitar usando for for n = 1:N w1(n) = f1(n) + f2(n); w2(n) = f1(n) - f2(n); w3(n) = f1(n) * f2(n); w4(n) = f1(n) / f2(n); end; % si no se acuerdan de los operadores sinteticos pueden usar for %% otras funciones matematicas %podemos generar datos prealocar simultaneamente x = 0: 1/(N-1) :1;% generamos un arreglo vamos de cero a 1 cada 0.001 z1 = sin(2*pi*x); z2 = log(x+1); %% transposicion C_fil = [1 2 3 4 5];%fila C_col = [1;2;3;4;5];%columna %D = C_fil + C_col; esto causa error E_fil = transpose(C_col); %transpose() convierte fila en columna %y viceversa F = C_fil + E_fil; G = C_fil + transpose(C_col); %% rellenando un arreglo %deben estar en la misma direccion H = [F,C_fil,0,0,transpose(C_col)];%ente caso son todos fila