我有一个变量
filterSize = 3; %Size of the Filter;
我想定义一个名为SIZE的新字符变量,并将其赋值为大小=(过滤器大小x过滤器大小)
size='3x3';
但我想使用FilterSize来实现自动化。大小需要为字符。谢谢
ars1skjm1#
您可以使用sprintf来格式化包含变量的字符
sprintf
filterSize = 3; sz = sprintf( '%dx%d', filterSize, filterSize );
您应该避免使用size作为变量名,因为您正在隐藏一个常用的内置函数。
size
zfycwa2u2#
我已经解决了这个问题。
size_temp = [string(filterSize),'x',string(filterSize)]; a = convertStringsToChars(size_temp); x=char(size_temp(1)); y=char(size_temp(2)); z=char(size_temp(3)); size = [x,y,z]
但正如cris luengo在评论中所建议的那样,size = [num2str(filterSize),'x', num2str(filterSize)]是一个更好的解决方案。
size = [num2str(filterSize),'x', num2str(filterSize)]
lstz6jyr3#
MatLab有一个功能,可以准确地完成您所要求的:。调用通用示例:Evin(‘base’,[‘输出=’,表达式])MatLab函数帮助参考:https://uk.mathworks.com/help/matlab/ref/evalin.html?s_tid=srchtitle_evalin_1为代码中的新变量赋值有批评者和支持者,因为它是用代码编写新代码的利器。我与Mathworks论坛的一名成员就如何使用valin进行了几次激烈的讨论。当有人鼓吹不要做某事,因为他们认为这是有罪的,但他们一直在做,人们通常应该避免使用valin在现有代码中简洁地构建新代码,这是毋庸置疑的。我建议您忽略valin帮助页面中的最后一行,其中有人不鼓励您使用valin来准确地做您需要做的事情,以解决您的问题。希望能有所帮助
3条答案
按热度按时间ars1skjm1#
您可以使用
sprintf
来格式化包含变量的字符您应该避免使用
size
作为变量名,因为您正在隐藏一个常用的内置函数。zfycwa2u2#
我已经解决了这个问题。
但正如cris luengo在评论中所建议的那样,
size = [num2str(filterSize),'x', num2str(filterSize)]
是一个更好的解决方案。lstz6jyr3#
MatLab有一个功能,可以准确地完成您所要求的:。
调用通用示例:
Evin(‘base’,[‘输出=’,表达式])
MatLab函数帮助参考:
https://uk.mathworks.com/help/matlab/ref/evalin.html?s_tid=srchtitle_evalin_1
为代码中的新变量赋值有批评者和支持者,因为它是用代码编写新代码的利器。
我与Mathworks论坛的一名成员就如何使用valin进行了几次激烈的讨论。
当有人鼓吹不要做某事,因为他们认为这是有罪的,但他们一直在做,人们通常应该避免使用valin在现有代码中简洁地构建新代码,这是毋庸置疑的。
我建议您忽略valin帮助页面中的最后一行,其中有人不鼓励您使用valin来准确地做您需要做的事情,以解决您的问题。
希望能有所帮助