在 MATLAB 中将变量插入字符串

Ammar Ali 2022年7月18日
在 MATLAB 中将变量插入字符串

本教程将讨论使用 MATLAB 中的 num2str() 函数将变量值插入到字符串中。

在 MATLAB 中将变量插入字符串

如果我们想将变量的值插入到字符串中,我们需要使用 num2str() 函数将值转换为字符串或字符数组,然后我们可以使用 strcat() 函数将其与字符串连接起来。例如,让我们在字符串中插入一个浮点数。

请参阅下面的代码。

clc
clear

n = 100.577;
s1 = num2str(n);
s2 = "value is ";
s3 = strcat(s2,s1)

输出:

s3 =

    "value is 100.577"

我们还可以使用 num2str() 函数的第二个参数添加精度或我们希望在输出中看到的位数,它的输入应该是一个正整数。第二个参数设置将转换为字符串的最大位数,如果我们要设置精度,输入应该是浮点数。

例如,让我们仅将数字的前 3 个元素转换为字符串,并将其与另一个字符串连接。请参阅下面的代码。

clc
clear

n = 10.212;
s1 = num2str(n,3);
s2 = "value is ";
s3 = strcat(s2,s1)

输出:

s3 =

    "value is 10.2"

在输出中,字符串 s3 仅包含 3 位浮点数,因为我们在 num3str() 函数中将精度设置为 3。如果我们不设置精度,num2str() 函数会将整个数字转换为字符数组。

我们还可以使用带百分号的 f 字符设置输入的格式类型,例如浮点数的有效位数,我们可以在百分比和 f 之间传递有效位数 特点。例如,让我们将长浮点数四舍五入为 2 位有效数字,然后将其与字符串连接起来。

请参阅下面的代码。

clc
clear

n = 10.218;
s1 = num2str(n,'%0.2f');
s2 = "value is ";
s3 = strcat(s2,s1)

输出:

s3 =

    "value is 10.22"

我们可以在上面的输出中看到该数字被四舍五入为两位有效数字。在上面的代码中,我们已经使用双引号定义了字符串,但是我们也可以使用单引号定义字符串。

我们还可以使用 strcat() 函数在同一行中连接多个字符串。我们只需要传递函数中的所有字符串变量。

我们还可以在两个或多个字符串之间使用加号将它们连接起来,得到一个字符串。在上面的代码中,我们手动在数字和字符串之间添加了一个空格,但是如果我们用单引号定义字符串,我们将无法在两个变量之间添加空格。

例如,让我们使用单引号重复上面的示例。请参阅下面的代码。

clc
clear

n = 10.218;
s1 = num2str(n);
s2 = 'value is ';
s3 = strcat(s2,s1)

输出:

s3 =

    'value is10.218'

在上面的输出中,我们在 s2 字符串中添加了一个空格,但该空格在 s3 字符串中不存在。如果我们使用加号,输出将是相同的。

为避免此问题,至少要连接的字符串之一应该是字符串,而不是字符向量或数组。num2str() 函数总是返回一个字符数组,但我们可以使用 string() 函数将输出作为字符串获取。

例如,让我们在上面的例子中使用 string() 函数。请参阅下面的代码。

clc
clear

n = 10.218;
s1 = string(n);
s2 = 'value is ';
s3 = s2 + s1

输出:

s3 =

    "value is 10.218"

我们可以看到数字和字符串之间的输出中存在空格,并且输出也是字符串数据类型。如果我们有一个很长的字符或字符串数​​组并且想要连接它们并在它们之间包含一个空格或另一个分隔符,我们可以使用 join()strjoin() 函数。

如果我们要连接的值在向量或矩阵中,我们可以使用 join() 函数,如果值在数组中,我们必须使用 strjoin() 函数。我们可以使用 join() 函数连接不同数据类型的变量,但我们必须将所有变量放在单个向量或矩阵中,并将其传递给 join() 函数以连接它们。

例如,让我们使用 join() 函数连接一个字符串、一个字符数组和一个数值。请参阅下面的代码。

clc
clear

n = 100.55;
s1 = "Value is";
s2 = 'kg';
n = [s1,n,s2];
s = join(n)

输出:

s =

    "Value is 100.55 kg"

请注意,我们要连接的变量中至少有一个值应该是字符串;否则,结果可能会改变。在上面的输出中,三个变量已经连接在一起;结果保存为字符串,因为一个输入是字符串。

我们也可以使用 strjoin() 函数,但我们要连接的变量应该是字符数组数据类型并包含在数组中。默认情况下,join()strjoin() 函数在向量或数组的值之间放置空格,但我们也可以使用 join()strjoin 的第二个参数放置其他分隔符和字符() 功能。

我们必须在 join()strjoin() 函数中将分隔符作为字符数组传递,以将它们添加到向量或数组的元素之间。例如,让我们使用不同的分隔符重复上述示例。

请参阅下面的代码。

clc
clear

n = 100.55;
s1 = "Value is";
s2 = 'kg';
n = [s1,n,s2];
s = join(n,'--')

输出:

s =

    "Value is--100.55--kg"

我们可以在上面的输出中看到,输入分隔符被添加到输出中,而不是空格分隔符。我们还可以在给定矩阵或数组的元素之间添加任意长度的字符串或字符数组作为分隔符。

我们还可以使用 Matlab 的 sprintf() 函数,该函数用于将格式化数据添加到字符串或字符数组中。sprintf() 函数的第一个参数是格式规范,接下来的参数是我们想要放入字符串或字符数组的变量。

如果使用双引号将格式规范定义为字符串,则 sprintf() 函数的输出也将是字符串。如果格式规范定义为使用单引号的字符数组,则 sprintf() 函数的输出也将是字符数组。

我们可以像上面在 num2str() 函数中使用的相同方式使用格式规范。我们可以使用百分号;之后,我们可以传递字段宽度,然后我们可以传递数据类型。

例如,让我们使用 sprintf() 函数将不同数据类型的变量添加到字符串中。请参阅下面的代码。

clc
clear

n = 100.55;
s1 = "Value is";
s2 = 'kg';
s = sprintf("%s %0.1f %s",s1,n,s2)

输出:

s =

    "Value is 100.5 kg"

在上面的代码中,我们使用%s 作为字符串数据类型,使用%f 作为浮点数据类型。我们还定义了浮点数的有效位数。

在上面的代码中,我们将字符串保存在变量中,然后将它们传递给 sprintf() 函数,但我们也可以直接在函数的第一个参数中写入字符串。在大字符串变量的情况下,为了简单起见,我们应该将它们保存在变量中并将它们传递到 sprintf() 函数中。

我们还可以将符号用于其他数据类型,例如%c 用于字符,%d 用于整数等。查看此链接以获取有关 sprintf() 函数的更多详细信息。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相关文章 - MATLAB String