PROBLEM IN sprintf
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
hi,
in the following ode why k become larger than L when use sprintf, where I got this error when run code:
%%%%%%%%%%%%%
Attempted to access b1(5123); index out of bounds because numel(b1)=5122.
Error in ==> webscop at 9
mat(i,j)=b1(k);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
the code:
f=fopen('ws1.txt','r+');%%%%%%open the original data file
b1=fscanf(f,'%d');
b=sprintf('%d\n', b1);
fclose all
L=length(b1);
k=1;i=1
while k <=L
mat(i,j)=b1(k);
k=k+1;
end
i=i+1;
end
thanks
3 Kommentare
Jan
am 11 Okt. 2011
@huda: It is still unclear, what you want to achieve. I guess, a single REPMAT call solves your problem.
Antworten (1)
Walter Roberson
am 11 Okt. 2011
Your "i=i+1" appears to be unneeded, in that it is not inside any loop and the end of your routine is immediately afterwards.
You appear to be using the subscript "j" for mat(i,j) but "j" is not defined in anything you show. As we do not know its value we cannot tell you what is going on. Worse yet we will assume that j has its default value of sqrt(-1) and that you are trying to index an impossible location.
Is "mat" completely uninitialized or is it passed in as part of the missing function header? And there must be a function header or else the "end" would be a syntactic error and you would not be able to run the routine at all.
Real code, please!
5 Kommentare
Walter Roberson
am 11 Okt. 2011
Such long running times are pretty common when you do not preallocate the arrays.
Why not replace your inner loop with
mat(i,1:4) = b1(k:k+3);
k = k + 4;
And having done that, why not replace the entire computation with
mat = reshape(b1(:),4,[]).' ;
This should, of course, lead you to ask, "But what if b1 is not an exact multiple of 4 characters?", but since you do not check that in your original code, we must assume that you have external knowledge that this will never be the case.
I am somewhat mystified that you are storing the character representation of b rather than b itself, but I guess you have your reasons.
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!