String 如何构造字符串并将其作为命令运行

String 如何构造字符串并将其作为命令运行,string,matlab,plot,String,Matlab,Plot,我在用gramm绘制一些数据长话短说:我想根据用户输入构造一个字符串,然后作为调用GRAM函数的命令运行 我有一个结构,它包含了许多样本的数据——每个样本中的数据包含了许多化学物种的强度 我正在构建一个条形图,显示每个样本中每种化学物质的强度。换句话说,我的y轴是强度,我的x轴是化学物种,我的“颜色”是样本 现在我不想绘制每个样本,甚至每个样本中的每个化学物种。就目前的情况而言,我必须完成并硬编码。但我想告诉matlab我想要绘制哪些化学物质和哪些样品 到目前为止,这意味着要编写一个非常长的命令

我在用gramm绘制一些数据长话短说:我想根据用户输入构造一个字符串,然后作为调用GRAM函数的命令运行

我有一个结构,它包含了许多样本的数据——每个样本中的数据包含了许多化学物种的强度

我正在构建一个条形图,显示每个样本中每种化学物质的强度。换句话说,我的y轴是强度,我的x轴是化学物种,我的“颜色”是样本

现在我不想绘制每个样本,甚至每个样本中的每个化学物种。就目前的情况而言,我必须完成并硬编码。但我想告诉matlab我想要绘制哪些化学物质和哪些样品

到目前为止,这意味着要编写一个非常长的命令:

g=gramm('y', allData.(fileName).intensities, 'x', ...
    allData.(fileName).chemicalSpecies, 'color', ...
    allData.(fileName).sampleName,'subset',...
    allData.(fileName).sampleNum <u & ...
    allData.(fileName).sampleNum >l & ...
    allData.(fileName).chemicalSpecies =="Butanal" | ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Butenal" |...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Pentanal" |...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Pentenal" | ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Hexanal" | ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Hexenal" | ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Heptanal" | ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Heptenal"| ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Octanal" | ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Octenal" | ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Nonanal"  | ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Nonenal" | ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Butanedial"| ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Pentanedial"| ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Hexanedial"| ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Heptanedial"| ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Octanedial" | ...
    allData.(fileName).sampleNum <u & allData.(fileName).sampleNum >l ...
    & allData.(fileName).chemicalSpecies == "Nonanedial")
我不需要硬编码,而是创建一个包含所有这些内容的字符串,然后作为命令传递

我认为这可以通过使用for循环来实现,该循环将字符串连接到每个SampleName的数组。使用此方法,我可以创建一个字符串,该字符串表示:

constructPlot=“g=gram('y',allData.(文件名)。强度,'x'。。。 所有数据。(文件名)。化学种类,'颜色'。。。 allData.(文件名).sampleName,'subset',。。。 allData.(文件名).sampleName=='A'&。。。 allData.(文件名).chemicalSpecies==“丙醛” allData.(文件名).chemicalSpecies==“丁醛”|。。。 allData.(文件名).sampleName=='B'&。。。 allData.(文件名).chemicalSpecies==“丙醛” allData.(文件名).chemicalSpecies==“丁醛”|。。。 allData.(文件名).sampleName=='C'&。。。 allData.(文件名).chemicalSpecies==“丙醛” allData.(文件名).chemicalSpecies==“丁醛”)“

当我键入constructPlot时,它会显示字符串,但我希望它作为命令而不是字符串运行。

您可以使用它来组合条件:

names = [...
"Butanal"  
"Butenal" 
"Pentanal" 
"Pentenal"  
"Hexanal"  
"Hexenal"  
"Heptanal"  
"Heptenal" 
"Octanal"  
"Octenal"  
"Nonanal"   
"Nonenal"  
"Butanedial"
"Pentanedial"
"Hexanedial"
"Heptanedial"
"Octanedial" 
"Nonanedial"];
condition = allData.(fileName).sampleNum < u & ...
allData.(fileName).sampleNum > l & ...  
ismemeber(allData.(fileName).chemicalSpecies ,names);
names=[。。。
“丁醛”
“丁烯醛”
“戊醛”
“戊烯醛”
“己醛”
“己烯醛”
“庚醛”
“七分之一”
“八醛”
“八进制”
“壬醛”
“非最终”
“丁二醇”
“戊二醛”
“己二醛”
“庚烷”
“辛二醇”
“非强制性”];
条件=所有数据。(文件名).sampleNuml&。。。
IsMember(所有数据。(文件名)。化学种类,名称);
names = [...
"Butanal"  
"Butenal" 
"Pentanal" 
"Pentenal"  
"Hexanal"  
"Hexenal"  
"Heptanal"  
"Heptenal" 
"Octanal"  
"Octenal"  
"Nonanal"   
"Nonenal"  
"Butanedial"
"Pentanedial"
"Hexanedial"
"Heptanedial"
"Octanedial" 
"Nonanedial"];
condition = allData.(fileName).sampleNum < u & ...
allData.(fileName).sampleNum > l & ...  
ismemeber(allData.(fileName).chemicalSpecies ,names);