Matlab - Crear una matriz tras un FORLOOP

 
Vista:
sin imagen de perfil

Crear una matriz tras un FORLOOP

Publicado por Miren (9 intervenciones) el 02/03/2017 16:10:51
Como puedo crear una matriz de 2 columnas y un numero de filas que depende de cuantos valores pasan por la condicion if.
Es decir, solo quiero que cree la matriz cuando el x2 pase la condicion del if y entonces guardar los valores de x2 en una columna y de b en la otra y asi sucesivamente sin que se sobreescriban.
Agradeceria una respuesta.
Muchas gracias.

Aqui os dejo mi codigo
1
2
3
4
5
6
7
8
9
for j=1:1:length(b)
	x2(k)=(b(j)-n)/m;
	scatter(x2(k),b(j),'g');
	if x2(k)>posX_min && x2(k)<posX_max
 
		k=k+1;
		end
		j=j+1;
	end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Crear una matriz tras un FORLOOP

Publicado por Miren (9 intervenciones) el 02/03/2017 16:18:41
Este es el codigo entero. He intentado hacerlo como esta lo del matrix, pero no me sale.
Muchass gracias por la ayuda.
el valor de b esta importado por un fichero excel, es de dimension 12x1 double
b=
0
0,510000000000000
1,02000000000000
1,53000000000000
2,03000000000000
2,54000000000000
-0,510000000000000
-1,02000000000000
-1,53000000000000
-2,54000000000000
-2,03000000000000
-3,04000000000000


alpha=10;
m=tand(alpha);
c=-40:1:3; %x-en mobitu bidana
y0=-3.5;
y1=3.5;
k=1;
h=1;
x2=zeros(size(CoordX));
matrix=zeros(size(CoordX),2);

for i=1:1:length(c)
n=y0-m*c(i);
x1=(y1-n)/m;
plot([c(i) x1],[y0 y1],'r');
for j=1:1:length(b)
x2(k)=(b(j)-n)/m;
scatter(x2(k),b(j),'g');
if x2(k)>posX_min && x2(k)<posX_max
matrix(:,h)=[x2(k) b(j)];
j=j+1;
k=k+1;
h=h+1;
end
end
i=i+1;
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear una matriz tras un FORLOOP

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 02/03/2017 16:30:42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
clear all
close all
b=round(100*rand(1,20));
m=round(20*rand)
n=round(20*rand)
k=1;
posX_min=round(5*rand)
posX_max=round(30*rand)
hold on
for j=1:length(b)
x2(k)=(b(j)-n)/m;
scatter(x2(k),b(j),'g');
if x2(k)>posX_min && x2(k)<posX_max
    M(k,:)=[x2(k) b(j)];
k=k+1;
end
end
hold off
b
x2
M


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
>> scattern1
m =
    14
n =
     0
posX_min =
     3
posX_max =
    12
b =
    44    53    46    88    52    94    64    96    24    68    29    67    70     7    25    22    67    84    34    78
x2 =
    3.1429    3.7857    3.2857    6.2857    3.7143    6.7143    4.5714    6.8571    4.8571    4.7857    5.0000    4.7857    6.0000    5.5714
M =
    3.1429   44.0000
    3.7857   53.0000
    3.2857   46.0000
    6.2857   88.0000
    3.7143   52.0000
    6.7143   94.0000
    4.5714   64.0000
    6.8571   96.0000
    4.8571   68.0000
    4.7857   67.0000
    5.0000   70.0000
    4.7857   67.0000
    6.0000   84.0000
    5.5714   78.0000


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Crear una matriz tras un FORLOOP

Publicado por Miren (9 intervenciones) el 02/03/2017 16:39:47
Me funciona correctamente. Muchas gracias Jose.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear una matriz tras un FORLOOP

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 02/03/2017 16:46:11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
clear all
close all
b=[
0
0.510000000000000
1.02000000000000
1.53000000000000
2.03000000000000
2.54000000000000
-0.510000000000000
-1.02000000000000
-1.53000000000000
-2.54000000000000
-2.03000000000000
-3.04000000000000]
 
posX_min=round(5*rand)
posX_max=round(30*rand)
alpha=10;
m=tand(alpha);
c=-40:1:3; %x-en mobitu bidana 
y0=-3.5;
y1=3.5;
k=1;
h=1;
hold on
for i=1:length(c)
    n=y0-m*c(i);
    x1=(y1-n)/m;
    plot([c(i) x1],[y0 y1],'r');
    for j=1:length(b)
        x2(k)=(b(j)-n)/m;
        scatter(x2(k),b(j),'g');
        if x2(k)>posX_min && x2(k)<posX_max
            matrix(h,:)=[x2(k) b(j)];
            k=k+1;
            h=h+1;
        end
    end
end
hold off

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab



http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Crear una matriz tras un FORLOOP

Publicado por Miren (9 intervenciones) el 02/03/2017 17:01:41
Como podria graficar la matriz que he creado (M) teniendo en cuenta que una columna es la x y la otra la y?
me tendrian que dar un cuadrado lleno de puntos.

Muchas gracias, y gracias tambien por los consejos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear una matriz tras un FORLOOP

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 02/03/2017 17:28:02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
clear all
close all
b=round(100*rand(1,20));
m=round(20*rand)
n=round(20*rand)
k=1;
posX_min=round(5*rand)
posX_max=round(200*rand)
hold on
for j=1:1:length(b)
x2(k)=(b(j)-n)/m;
scatter(x2(k),b(j),'g');
if x2(k)>posX_min && x2(k)<posX_max
    M(k,:)=[x2(k) b(j)];
k=k+1;
end
end
hold off
b
x2
M
[X2, B]=meshgrid(M(:,1),M(:,2))
plot(X2,B,'*')

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar