Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 将向量附加到矩阵上_Matlab_Vector_Matrix - Fatal编程技术网

Matlab 将向量附加到矩阵上

Matlab 将向量附加到矩阵上,matlab,vector,matrix,Matlab,Vector,Matrix,我有一个矩阵 DataSet(1000,400) 我希望将每一行复制到最初声明为 FinalDataSet=[] 我复制时遵循的规则如下,这是基于用户输入的 For any row i in "DataSet" if user enters a character X Add to FinalDataSet the vector (X,All Elements of DataSet(i)) else do nothing 我为上面的代码实现了

我有一个矩阵

 DataSet(1000,400)
我希望将每一行复制到最初声明为

FinalDataSet=[]
我复制时遵循的规则如下,这是基于用户输入的

 For any row i in "DataSet"
      if user enters a character X
          Add to FinalDataSet the vector (X,All Elements of DataSet(i))
      else do nothing
我为上面的代码实现了以下代码

n=size(DataSet,1);
for i=1:n
     element=inputdlg('Enter Character');
     if(~isempty(element))
          FinalDataSet=[FinalDataSet;[element DataSet(i,:)]];
     end
 end
(我观察到,如果按下“取消”,输入对话框将返回
[]

但是,当我执行上述代码时
FinalDataSet
具有以下形式

 'H'    [1x400 double]
 'g'    [1x400 double]
 'i'    [1x400 double]
这里有什么问题?是因为我想把两种不同类型的向量结合起来吗?如何获得(1000401)维矩阵而不是(1000,2)维矩阵


我觉得我要么需要为字符存储相应的ASCII值,要么需要为用户选择管理一个单独的向量。但是,如果没有上述两种方法,是否可能??请帮忙

我花了一些时间才意识到问题所在。你确实无法得到包含字母的矩阵

如果您真的想这样做,解决方案是将所有内容存储在1000x401单元阵列中,如下所示:

c =  ['H' num2cell(1:10)]
然而,这样一来,您将放弃通过矩阵处理获得的许多便利/效率

因此,我建议采用以下替代方案:

如果您满足于将字符存储为数字,则可以执行以下操作:

element = {'H'} % inputdlg returns a 1x1 cell
i=1;
DataSet = rand(1000,400);

v = [element{1}+0 DataSet(i,:)]
要查看它是哪个字母,可以使用
char

char(v(1))

我花了一些时间才意识到问题所在。你确实无法得到包含字母的矩阵

如果您真的想这样做,解决方案是将所有内容存储在1000x401单元阵列中,如下所示:

c =  ['H' num2cell(1:10)]
然而,这样一来,您将放弃通过矩阵处理获得的许多便利/效率

因此,我建议采用以下替代方案:

如果您满足于将字符存储为数字,则可以执行以下操作:

element = {'H'} % inputdlg returns a 1x1 cell
i=1;
DataSet = rand(1000,400);

v = [element{1}+0 DataSet(i,:)]
要查看它是哪个字母,可以使用
char

char(v(1))

另一种可能性是使用结构。您可以在结构名称后面附加字母以查找相应的数组。放置在结构中不同点上的所有阵列的大小可能不同,不必与您的阵列大小相同。以下是在您的代码中实现的:

n=size(DataSet,1);
for i=1:n
     element=inputdlg('Enter Character');

     if(~isempty(element))
         FinalDataSet.element=DataSet(i,:)
     end
end
从结构中读取数据是通过使用相应的元素调用结构来完成的,这里我们使用x作为示例

xdata = FinalDataSet.x;

您需要注意的是不要两次使用该元素,因为您将覆盖以前的数据。或者,如果该元素已存在于数组中并向您发出警告,则执行测试。希望这有帮助。

另一种可能性是使用结构。您可以在结构名称后面附加字母以查找相应的数组。放置在结构中不同点上的所有阵列的大小可能不同,不必与您的阵列大小相同。以下是在您的代码中实现的:

n=size(DataSet,1);
for i=1:n
     element=inputdlg('Enter Character');

     if(~isempty(element))
         FinalDataSet.element=DataSet(i,:)
     end
end
从结构中读取数据是通过使用相应的元素调用结构来完成的,这里我们使用x作为示例

xdata = FinalDataSet.x;

您需要注意的是不要两次使用该元素,因为您将覆盖以前的数据。或者,如果该元素已存在于数组中并向您发出警告,则执行测试。希望这有帮助。

好吧……这种方法解决了我的问题……谢谢!!让我们看看有没有人还有什么话要说……)好吧……这样就解决了我的问题……谢谢!!让我们看看是否有人还有其他话要说:)