How to use multiple variables in a name structure

6 views (last 30 days)
Hello,
a simple question please answer or show me a help file - I can't find it:
I get a filename
fig_name = [name, '_PLL.png'];
and get
'001_m1_60_const_20200611_200515_PLL.png'
now, I want have more variable in my fig_name, to get:
'001_m1_60_const_20200611_200515_SNR_1_PLL.png'
'001_m1_60_const_20200611_200515_SNR_2_PLL.png'
'001_m1_60_const_20200611_200515_SNR_3_PLL.png'
...
'001_m1_60_const_20200611_200515_SNR_N_PLL.png'
I tried allready with:
fig_name = [name,'_SNR_',SNR,'_PLL.png']
but I get just:
fig_name = '001_m1_60_const_20200611_200515_SNR__PLL.png'
What is wrong? What is a rule to create a names with usin of variables?
Thank you!

Answers (2)

madhan ravi
madhan ravi on 23 Jun 2020
compose('001_m1_60_const_20200611_200515_SNR_%d_PLL.png', (1:3).')
  5 Comments

Sign in to comment.


Stephen23
Stephen23 on 23 Jun 2020
Edited: Stephen23 on 23 Jun 2020
The most efficient approach is to use sprintf (and is what experienced MATLAB users would do):
for k = ...
fig_name = sprintf('%s_SNR_%u_PLL.png',name,k);
...
end
You should avoid using i as a variable name, as this shadows the inbuilt imaginary unit i.
  7 Comments
Stephen23
Stephen23 on 23 Jun 2020
What you showed is a table for C's sprintf, apparently copied from here:
It supports a different set options than MATLAB's sprintf, although there is some overlap.
To know what options MATLAB's sprintf supports, refer to the MATLAB documentation:
Nik Rocky
Nik Rocky on 23 Jun 2020
Oh, thank you! Its good to know. than the table is not compatible. Should I better delete it?

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!