the variable appears to change size of every loop iteration?

1 visualización (últimos 30 días)
msh jgtu
msh jgtu el 5 de Ag. de 2020
Comentada: Mark Thompson el 6 de Ag. de 2020
I tried to fix this problem but error message appear In an assignment A(I) = B, the number of elements in B and I must be the same
What is wrong with this code?
D=zeros(4)
For i=1:4
D(i)=conv(D(i,:),[1 0])
End

Respuestas (1)

Mark Thompson
Mark Thompson el 6 de Ag. de 2020
Hi msh,
Your variable D is a 4 x 4 matrix. And you have a 1 x 2 value to convolve with it. Referring to the documentation for the conv() function if you want a full length convolution result, thenthe result will be a 4 x 5 matrix. So, your variable for storing the result of each convolution will need to be this size (i.e. convolving a 1 x 4 with a 1 x 2 results in a 1 x 5 result). I try to explain in the code and comments below:
D = zeros(4);
val = [1 0];
convolutionLength = length(D) + length(val) - 1; % number of values returned as a result of the convolution
result = zeros(length(D),convolutionLength);
for i=1:4
result(i,:) = conv(D(i,:),val);
end
Also worth noting is your assignment to D(i) in the for loop will only ever access the element at D(i,1). So you're trying to store 5 values into 1! Test this by assigning D = zeros(4) in your command window and then typing D(1) and look at the result.
If you really want to overwrite your D variable with the convolution result then you can set the "shape" flag in the conv() function to 'same'. e.g. conv(u,v,'same'); this will return a result the same length as variable u. In your case you could use this as in the following code snippet:
D = zeros(4);
for i=1:4
D(i,:) = conv(D(i,:),[1 0],'same');
end
I hope this helps!
  4 comentarios
Mark Thompson
Mark Thompson el 6 de Ag. de 2020
D = zeros(4); is re-initialising D to be a 4 x 4 matrix of 0's. So if you are doing this after D=[D1;D2;D3;D4] then you are erasing that data and writing the 4 x 4 matrix of 0's to the variable D.
I can't help anymore unless you can post more of your code, sorry. What data types are D1, D2, D3 and D4?

Iniciar sesión para comentar.

Categorías

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

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by