Sí se puede, solo cambia la línea U=zeros(m,n) por U=V ya que Matlab puede molestar si se intenta almacenar variables simbólicas en vectores de números.
Ese error aparece cuando la función no ha sido creada; es posible que la hayas guardado en una carpeta diferente a la carpeta desde la cual está trabajando Matlab. Para estar seguros, escribe en la terminal pwd Eso nos dirá cuál es la carpeta de trabajo; si no coincide con la ubicación del programa, puedes copiar el programa a la carpeta o cambiar la carpeta por el lugar donde se almacena el programa
@@programmath lo corregí y lo copie tal cual explicas en el video. Ejecuto en la ventana de comandos y ahora me aparece esto. Error: U(_0+li): subscripts must be real (forgot to initializen i or j?) Error: called from Gramschmidt at line 10 column 8
@@elnoctambulo1387 No es necesario aclarar qué cierra el end; evita escribir endfor y deja simplemente end. El endfunction no es necesario. En cuanto al posible error, puede deberse a que el llamado en la terminal se hizo como "Gramschmidt(V)" con la "s" en minúscula, cuando el nombre de la función es en mayúscula.
hola, me podrias decir, por qué me sale este error ? >> GramSchimidt Not enough input arguments. Error in GramSchimidt (line 4) [m n]=size(V); %n vectores con m componentes igual que en el video previamente puse los mismos vectores columnas
@@programmath puse tal cual, pusiste en tu video function U=GramSchmidt(V) %V es la matriz que contiene los vectores considerados almacenados en sus %columnas [m n]=size(V); %n vectores con m componentes U=zeros(m,n); U(:,1)=V(:,1); for k=2:n S=V(:,k); for j=1:k-1 S=S-(dot(V(:,k),U(:,j))/dot(U(:,j),U(:,j)))*U(:,j); end U(:,k)=S; end end
Por cierto. Acostumbrarse a separar con comas, como sugieres, es mejor ya que en otros lenguajes de programación, como Python, es la forma válida de separar elementos.
me has salvado, gracias
Me alegra que te haya sido de utilidad el video.
Se puede ejecutar el programa con vectores que tienen variables?
Sí se puede, solo cambia la línea U=zeros(m,n) por U=V ya que Matlab puede molestar si se intenta almacenar variables simbólicas en vectores de números.
a mi me sale esto al poner GramSchmidt, Unrecognized function or variable 'GramSchmidt'. que hago?
Ese error aparece cuando la función no ha sido creada; es posible que la hayas guardado en una carpeta diferente a la carpeta desde la cual está trabajando Matlab. Para estar seguros, escribe en la terminal
pwd
Eso nos dirá cuál es la carpeta de trabajo; si no coincide con la ubicación del programa, puedes copiar el programa a la carpeta o cambiar la carpeta por el lugar donde se almacena el programa
@@programmath mil gracias ya lo hare
@@programmath nd jajajaja ya mire y no se que mas hacer :(
Muéstrame el código, puede ser algún problema con el nombre de la función.
Hola, me podrías decir porqué me aparece este error.
error: 'GramSchmidt' undefined near line 1, column 1.
De antemano muchas gracias.
Déjame ver las primeras líneas del código y como hiciste la ejecución en la terminal.
@@programmath
1 function U=GramSchmidt (V)
2 % V es la matriz que contiene los vectores considerados
3 % almacenados en sus columnas.
4 [m,n]=size(V); %n vectores, con m componentes.
5 U=zeros(m,n);
6 U(:,1)=V(:,1);
7 for k=2:n
8 S=V(:,k);
9 for j=1:k-1
10 S=S-(dot(V(:,k),U(:,j))/dot(U(:,j),U(:,j)))*U(:,j);
11 endford
12 U(:,k)=S;
13 endford
14 endfunction
Comand windows
v1 = [1 1 0];
v2 = [2 0 -1];
v3 = [1; 1; 3]
V = [v1' v2' v3']
1 2 1
1 0 1
0 -1 2
Gramschmidt (V)
error: 'GramSchmidt' undefined near linea 1, column 1.
@@programmath lo corregí y lo copie tal cual explicas en el video.
Ejecuto en la ventana de comandos y ahora me aparece esto.
Error: U(_0+li): subscripts must be real (forgot to initializen i or j?)
Error: called from
Gramschmidt at line 10 column 8
@@elnoctambulo1387 Según dice el error, hay un problema con los contadores del for., ya que no se usó i sino k.
@@elnoctambulo1387 No es necesario aclarar qué cierra el end; evita escribir endfor y deja simplemente end. El endfunction no es necesario.
En cuanto al posible error, puede deberse a que el llamado en la terminal se hizo como "Gramschmidt(V)" con la "s" en minúscula, cuando el nombre de la función es en mayúscula.
hola, me podrias decir, por qué me sale este error ?
>> GramSchimidt
Not enough input arguments.
Error in GramSchimidt (line 4)
[m n]=size(V); %n vectores con m componentes
igual que en el video previamente puse los mismos vectores columnas
No pasaste los parámetros.
Al ejecutar, debes escribir GramSchmidt(V)
Donde V es la matriz con los vectores
@@programmath puse tal cual, pusiste en tu video
function U=GramSchmidt(V)
%V es la matriz que contiene los vectores considerados almacenados en sus
%columnas
[m n]=size(V); %n vectores con m componentes
U=zeros(m,n);
U(:,1)=V(:,1);
for k=2:n
S=V(:,k);
for j=1:k-1
S=S-(dot(V(:,k),U(:,j))/dot(U(:,j),U(:,j)))*U(:,j);
end
U(:,k)=S;
end
end
El problema está en la ejecución. En el comand window escribe
V=[1 2 1; 1 0 1; 0 -1 2];
GramSchmidt(V)
@@programmath tenias razón, ahora si corre el código, muchas gracias
no faltó una coma? entre n y m en la linea de size ?
En Matlab los vectores permiten separar elementos con espacio o con coma; en pocas palabras [m n] es equivalente a [m,n]
Por cierto. Acostumbrarse a separar con comas, como sugieres, es mejor ya que en otros lenguajes de programación, como Python, es la forma válida de separar elementos.
alguien me podria ayudar para el codigo en python
En este video lo encontrarás
ua-cam.com/video/_Yawo2TLuXQ/v-deo.html