How do I fix this error?
1 view (last 30 days)
Show older comments
Winston Sabellona
on 21 May 2022
Edited: Winston Sabellona
on 22 May 2022
%$Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 0-by-1.
%$Error in machine_problem (line 39)
%$ p_new(j,1) = w*a + z*b; "
%code
states = [0; 3; 3; 5; 6; 8; 8; 11];
fors = [0.02;0.02;0.02];
capacities =[3;3;5];
p_old = 0;
for i=1:length(capacities)
fprintf('Adding unit: %d \n',i);
p_new = 0;
for j = 1:(2^i)
if states(j,1) == 0
[a]= 1;
elseif j >= (2^i)
[a] =0;
end
if (states(j,1) - capacities(i,1)) <= 0
[b] = 1 ;
else
x = find(states == (states(j,1)-capacities(i,1)));
[b] = p_old(x,1);
end
[w] = 1 - fors(i,1)
[z] = fors(i,1)
p_new(j,1) = w*a + z*b;
end
p_old = p_new;
disp(p_new);
end
0 Comments
Accepted Answer
Walter Roberson
on 21 May 2022
if states(j,1) == 0
[a]= 1;
elseif j >= (2^i)
[a] =0;
end
what if neither of those is true? What will a be initialized to?
x = find(states == (states(j,1)-capacities(i,1)));
How do you know that exactly one such location exists?
2 Comments
Walter Roberson
on 22 May 2022
%code
states = [0; 3; 3; 5; 6; 8; 8; 11];
fors = [0.02;0.02;0.02];
capacities =[3;3;5];
p_old = 0;
for i=1:length(capacities)
fprintf('Adding unit: %d \n',i);
p_new = 0;
for j = 1:(2^i)
if states(j,1) == 0
[a]= 1;
elseif j >= (2^i)
[a] =0;
else
error('a undefined');
end
if (states(j,1) - capacities(i,1)) <= 0
[b] = 1 ;
else
x = find(states == (states(j,1)-capacities(i,1)));
[b] = p_old(x,1);
end
[w] = 1 - fors(i,1)
[z] = fors(i,1)
temp = w*a + z*b;
p_new(j,1:numel(temp)) = temp;
end
p_old = p_new;
display(p_new);
end
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!