MATLAB Answers

How to use multiple variables in a name structure

3 views (last 30 days)
Nik Rocky
Nik Rocky on 23 Jun 2020
Commented: Nik Rocky on 23 Jun 2020
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
now, I want have more variable in my fig_name, to get:
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!


Sign in to comment.

Answers (2)

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


Show 2 older comments
Image Analyst
Image Analyst on 23 Jun 2020
Or for those of us who prefer sprintf():
for k = 1 : SNR
fig_name = sprintf('%s_SNR_%d_PLL.png', name, k)

Sign in to comment.

Stephen Cobeldick
Stephen Cobeldick on 23 Jun 2020
Edited: Stephen Cobeldick 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);
You should avoid using i as a variable name, as this shadows the inbuilt imaginary unit i.


Show 4 older comments
Stephen Cobeldick
Stephen Cobeldick 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.


Translated by