(MATLAB beginner) How can I solve this error: In an assignment A(:) = B, the number of elements in A and B must be the same.
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I'm trying to use MATLAB for my SWMM project in calibrating certain parameters. Shown below was the part of the program:
runvol_mea=[2.071
];
RunVol_mea=runvol_mea(1,:);
peakf=[0.122
];
PeakF_mea=peakf(1,:);
% Upper and Lower boundaries of parameters
lb = [250 60 0.9];
ub = [350 80 1.4];
% populate initial starting vertices (6 vertices) k = 2n ; n=3 (number of parameters to be calibrated)
par_1=zeros(6,3);
for i=1:6
par_o(i,:)=lb+rand(1,3).*(ub-lb);
end
% Model run
par=par_o;
max_int=300; % maximum number of iteration
Toler_=zeros(10,3); % Counter check
RunVol_sim=zeros(1,6); % number of vertices / number of storms
PeakF_sim=zeros(1,6);
E=zeros(1,1);
for i=1:6 % for 6 different vertices
%i
% Changing Subcatchment Area
Data{1,1}{index3+1}(52:58)=sprintf('%6.4f',par(i,1)); (This part was the error)
% Changing % impervious
Data{1,1}{index3+2}(59:61)=sprintf('%2f',par(i,2));
% Changing Subcatchment width range
Data{1,1}{index3+4}(62:67)=sprintf('%5.2f',30.72*par(i,3));
In the command window, it shows,
??? In an assignment A(:) = B, the number of elements in A and B
must be the same.
Error in ==> Tbftest at 60
Data{1,1}{index3+1}(52:58)=sprintf('%6.4f',par(i,1));** *
Its my first time using MATLAB and my seniors doesn't know how to handle this as well. I really appreciate anyone's help on this.
0 commentaires
Réponse acceptée
Iain
le 12 Fév 2014
Ick. Data is a cell array that contains a cell array that contain arrays.
Data{1,1}{index3+1}(52:58) is 7 characters long.
sprintf('%6.4f',par(i,1)); is a different length. It is at least 6 characters long.
Obviously, you can't fit 6, 8, 9 or 10 characters in a 7 character long space, so you need to adapt either the space you're sticking it in, or change what you're trying to stick in.
string_to_add = sprintf('%6.4f',par(i,1));
length_of_string = numel( string_to_add);
Data{1,1}{index3+1}(52:(52+length_of_string-1)) = string_to_add;
That'll get rid of the error, but not necessarily fix what the problem is.
Plus de réponses (1)
Walter Roberson
le 12 Fév 2014
52:58 is seven locations, but your 6.4f format is producing six characters.
0 commentaires
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!