replacing a matrix in loop

20 visualizaciones (últimos 30 días)
HADIMARGO
HADIMARGO el 26 de Jun. de 2021
Respondida: Stephen23 el 26 de Jun. de 2021
hi. i want to replace the matrix a in x(1,i) , when the x(1,i) == 0 and matrix b, when the x(1,i) == 1.
how could i do this?
clc; clear all; close all;
a = [ 1 1 1 0 0 0 ]
b = [ 0 0 0 1 1 1 ]
% Creating Random 0,1 in 10 times:
x = [ 1 1 0 0 ] % x has 4 column
for i=1:1:4
if x(1,i) == 0
x(1,i) = a;
elseif x(1,i) == 1
x(1,i) = b;
end
end
my code is wrong. how could i do this work? i know for example x(1,1) = 1 , how could i replace matrix with x(1,1)?
  1 comentario
Jan
Jan el 26 de Jun. de 2021
I do not understand, what you want to achieve.

Iniciar sesión para comentar.

Respuestas (2)

Akshit Bagde
Akshit Bagde el 26 de Jun. de 2021
Editada: Akshit Bagde el 26 de Jun. de 2021
Hi!
You won't be able to perform x(1,i) = a because the size of the left side is 1-by-1 and the size of the right side is 1-by-6.
You can try this!
a = [ 1 1 1 0 0 0 ];
b = [ 0 0 0 1 1 1 ];
x = [ 1 1 0 0 ];
% x has 4 Columns, a & b has 6 columns
for i=1:6:24
if x(i) == 0
x = [x(1:i-1) a x(i+1:end)]; % Replace x(i) with a
elseif x(i) == 1
x = [x(1:i-1) b x(i+1:end)]; % Replace x(i) with b
end
end

Stephen23
Stephen23 el 26 de Jun. de 2021
Do NOT use a loop for this! Do NOT expand any arrays inside loops!
A simpler and much more efficient approach using a comma-separated list:
a = [1,1,1,0,0,0];
b = [0,0,0,1,1,1];
x = [1,1,0,0];
c = {a,b};
z = [c{1+x}]
z = 1×24
0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0
All MATLAB beginners need to learn how to use comma-separated lists effectively:
so that they can learn how to write simple and efficient MATLAB code.

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by