I keep getting this matrix error when I run my code, any tips how I can fix it, its line 45.

조회 수: 5 (최근 30일)
N=10;
L=10;
D=.01;
dt=.01;
k_on=1;
k_off=.1;
F=1;
tmax=100;
x=L*rand(N,1);
y=L*rand(N,1);
state=zeros(N,1);
figure;
axis([0 L 0 L]);
set(gca,'nextplot','replacechildren');
for t = 0:dt:tmax
dx=sqrt(2*D*dt)*randn(N,1);
dy=sqrt(2*D*dt)*randn(N,1);
x=x+dx;
y=y+dy;
x(x<0)=0;
x(x>L)=L;
y(y<0)=0;
y(y>L)=L;
p_on=k_on*dt*F;
p_off=k_off*dt;
for i = 1:N
if state(i)==0
if rand < p_on
state(i)=1;
end
else
if rand<p_off
state(i)=0
end
end
end
colors= repmat([1 0 0], N,1)
colors(state == 1,:,:) = repmat([0 1 0],sum(state),1);
scatter(x,y,50,colors,'filled');
title(sprintf('Time=%.2f',t));
drawnow;
if any(state == 1)
p_bind=1-exp(-k_on*dt*F);
if rand<p_bind
[~,i]=max(state);
state(i)=2;
colors(i,:)=[0]
end
end
end
Unable to perform assignment because the size of the left side is 8-by-3 and the size of the right side is 10-by-3.
colors(state == 1,:,:) = repmat([0 1 0],sum(state),1);

채택된 답변

DGM
DGM 2023년 5월 1일
편집: DGM 2023년 5월 1일
The error says it all. You're indexing the LHS based on state == 1. You're generating the RHS based on the sum of state. State contains values other than [0 1], so sum(state) is not necessarily equal to sum(state==1).

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by