如何将字符串转换为矢量/矩阵? 例如,如果字符串是“选项3”(Type = Char),并且我有一个要绘制的矢量:
Time=1:100;
Option3=3*Time;
Option4=5*Time;
plot(Time,Output) %Where the output=Option 3
如何做到这一点?这就是我想知道的原因,以及我在哪里得到的问题:https://www.mathworks.com/matlabcentral/fileexchange/35412-list-selection-dialog?s_tid=srchtitle
答案 0 :(得分:1)
听起来你本质上是想找到一种方法将给定的字符串(即'Option 3'
)映射到数据向量。您可以采取多种方法。以下是一些:
使用switch
声明:
switch Output
case 'Option_3'
plot(Time, 3*Time);
case 'Option _4'
plot(Time, 5*Time);
end
注意我将3*Time
放在的开关案例中,而不是先将其计算为Option3
,然后在调用plot
时使用该变量。这节省了内存,因为在绘图需要之前,它不会为每个选项创建数据。如果您的变量(Option3
等)首先创建,则只需在switch语句中相应地替换它们。
创建containers.Map
对象:
您可以将所有矢量放在带有相应选项字符串的地图中,然后使用选项字符串访问并绘制每个矢量:
optionMap = containers.Map({'Option 3', 'Option 4'}, {3*Time, 5*Time});
...
Output = 'Option 3';
plot(Time, optionMap(Output));
这显然需要预先计算所有矢量数据以放入地图中。您也可以在没有containers.Map
对象的情况下自行执行此操作,例如使用cell arrays:
options = {'Option 3', 'Option 4'}; % Cell array of possible option strings
vectorData = {3*Time, 5*Time}; % Cell array of corresponding vectors
...
Output = 'Option 3';
plot(Time, vectorData{strcmp(options, Output)});
使用eval
:
horrible decision,really。但仍然是一个选择。它要求您的Output
字符串和变量名称以某种方式相关(在这种情况下,从Output
中删除空格会为您提供变量名称):
Output = 'Option 3';
plot(Time, eval(strrep(Output, ' ', ''))); % Assumes Option3 variable exists
答案 1 :(得分:-2)
在我看来,做你想要完成的事情的最简单方法是if语句。
if ( return == 'Option 3')
y = 3*Time;
end
plot(Time, y);
等等你的其他选择