Live script fprintf temporarily not printing whole line
7 次查看(过去 30 天)
显示 更早的评论
While doing a bunch of file IO in a Live Script, and printing with fprintf, sometimes the line does not complete printing. Temporarily, it looks like the image below until the next iteration begins.
I was able to sort of recreate the effect with the code below, but what can be only a flicker in the execution of this snippet is much more noticable on my other project.
for i= 1:10
fprintf("Hello %d\n",i)
B= inv(rand(3000)+ 2*eye(3000));
end
Is this a bug or am I missing something?
2 个评论
Walter Roberson
2024-8-23
This does not surprise me.
Output within Live Script is buffered. There are weird effects. For example
hold on
for i = 1 : 10
plot(rand(1,5));
fprintf("Hello\n");
end
plot(0.5,1,'*');
will display all of the text first and the plot at the end, but
hold on
for i = 1 : 10
plot(rand(1,5));
fprintf("Hello\n");
end
will display all except one of the text first, then the plot, then the last text.
dpb
2024-8-24
Never use live script so no experience, but...I don't suppose a drawnow will make any difference here? Does disp act any differently?
回答(1 个)
Jatin
2024-9-4
编辑:Jatin
2024-9-6
I agree with what you mentioned, ‘fprintf’ does behave inconsistently in live editor. I’ve also faced the similar issue where the output of 'fprintf' is buffered.
For example,
for k = 1 : 10
fprintf('Hello: %d', k);
if k < 10
fprintf(",");
end
end
This code adds a new line with 'fprintf' in live editor which is not seen in standard script, as a workaround to the issue, Kindly check if wrapping the code inside a function as below helps your cause.
fun(10)
function fun(K)
for k = 1 : K
fprintf('Hello: %d', k);
if k < K
fprintf(",");
end
end
fprintf("\n");
end
Kindly refer to the following MATLAB Answer to know more on how to resolve this issue:
Hope this helps!
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!