How to add a custom string to a Matlab script's output?

1 回表示 (過去 30 日間)
Renat
Renat 2018 年 7 月 9 日
回答済み: Swastik Sarkar 2024 年 11 月 29 日
Dear community,
I have the following issue to solve. I run some data processing in a cluster environment, parallelized both across nodes and within a node with the use of parfor. The output is dumped into a single text file and there is no way to distinguish which line belongs to the processing of which data set. I can separate output from different nodes into individual log files, but not from different parallel jobs on a node, since it is treated by the cluster as a single job. My Matlab code is basically a wrapper around the data processing Matlab script. Is it possible to somehow change each output line of a Matlab script and add a specific string to the beginning of it, e.g. a dataset ID? The only solution I see is to go through the script, hunt down lines that output something and append something to it. Basically, I am looking for something like this in a bash shell:
script_name | sed 's/^/$DATA_ID/'
Best regards,
Renat.
  2 件のコメント
Rik
Rik 2018 年 7 月 9 日
You could replace all occurrences of fprintf with your own function that appends your string and then calls fprintf again to write it. I would suggest you prepend the ID instead of append, as the fprintf call is likely to end with some form of a newline.
Renat
Renat 2018 年 7 月 9 日
Well, I was hoping there is a way to avoid doing this.

サインインしてコメントする。

回答 (1 件)

Swastik Sarkar
Swastik Sarkar 2024 年 11 月 29 日
Hi @Renat,
It is possible to override the built-in function responsible for displaying data to achieve the desired prefix on each output on each worker. For example, if the disp built-in function is used to display data, the following function can be defined to override it:
disp('Output')
prefix: Output
function disp(arg)
builtin('disp', ['prefix: ' arg])
end
For more information on the builtin function, refer to the following documentation:
Hope this helps printing desired info without requiring extensive modifications to the entire code.

カテゴリ

Help Center および File ExchangeParallel for-Loops (parfor) についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by