Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays Matlab单元阵列_Arrays_Matlab_Cell - Fatal编程技术网

Arrays Matlab单元阵列

Arrays Matlab单元阵列,arrays,matlab,cell,Arrays,Matlab,Cell,目前,我有一个435x1单元阵列,它是用importdata形成的。每个元素都是一个由17个值组成的字符串,值之间用逗号分隔 我希望字符串填充每行的列,而不是在一个元素中包含每行一个字符串。基本上,我想要一个435x17单元数组,其中每个元素都是一个单元数组,而不是一个435x1单元数组,每个元素都是一个字符串 到目前为止,我得到的最接近的结果是: data = importdata('my_data.data'); for x=1:size(data,1) data(x,:) = {s

目前,我有一个435x1单元阵列,它是用importdata形成的。每个元素都是一个由17个值组成的字符串,值之间用逗号分隔

我希望字符串填充每行的列,而不是在一个元素中包含每行一个字符串。基本上,我想要一个435x17单元数组,其中每个元素都是一个单元数组,而不是一个435x1单元数组,每个元素都是一个字符串

到目前为止,我得到的最接近的结果是:

data = importdata('my_data.data');
for x=1:size(data,1)
    data(x,:) = {strsplit(data{x}, ',')};
end
这将使每个元素处的字符串成为单元格数组。在上面的代码中,我仍然有一个435x1单元数组,但每个元素现在都是一个1x17单元数组

有人能告诉我把它变成435x17单元阵列吗?感谢您的帮助

数据文件中的一行如下所示:

republican,n,y,n,y,y,y,n,n,n,y,?,y,y,y,n,y

这些字符串共有435行。我想要一个435x17单元格数组,其中列是由逗号分隔的字符串。

您有任何示例数据吗?也许只是csv文件的几行

无论如何,如果您有R2013b,您应该能够使用一个表来完成这项工作。对于“data.csv”文件:

republican,n,y,n,y,y,y,n,n,n,y,?,y,y,y,n,y
democrat,y,n,y,n,n,n,y,y,y,n,!,n,n,n,y,n
然后,可以使用以下命令将其导入matlab:

这就是如何轻松创建表的方法。我还建议只使用一个表来保存这些数据,而不是将其作为一个单元格数组来处理,因为它是用来处理数据处理任务的,并且具有一些可能有助于您尝试执行的功能。但是,如果您确实需要将其转换为单元格数组,您当然可以将表转换为单元格:

>> c = table2cell(t)

c = 

    'republican'    'n'    'y'    'n'    'y'    'y'    'y'    'n'    'n'    'n'    'y'    '?'    'y'    'y'    'y'    'n'    'y'
    'democrat'      'y'    'n'    'y'    'n'    'n'    'n'    'y'    'y'    'y'    'n'    '!'    'n'    'n'    'n'    'y'    'n'

>> size(c)

ans =

     2    17

希望有帮助

您有任何样本数据吗?也许只是csv文件的几行

无论如何,如果您有R2013b,您应该能够使用一个表来完成这项工作。对于“data.csv”文件:

republican,n,y,n,y,y,y,n,n,n,y,?,y,y,y,n,y
democrat,y,n,y,n,n,n,y,y,y,n,!,n,n,n,y,n
然后,可以使用以下命令将其导入matlab:

这就是如何轻松创建表的方法。我还建议只使用一个表来保存这些数据,而不是将其作为一个单元格数组来处理,因为它是用来处理数据处理任务的,并且具有一些可能有助于您尝试执行的功能。但是,如果您确实需要将其转换为单元格数组,您当然可以将表转换为单元格:

>> c = table2cell(t)

c = 

    'republican'    'n'    'y'    'n'    'y'    'y'    'y'    'n'    'n'    'n'    'y'    '?'    'y'    'y'    'y'    'n'    'y'
    'democrat'      'y'    'n'    'y'    'n'    'n'    'n'    'y'    'y'    'y'    'n'    '!'    'n'    'n'    'n'    'y'    'n'

>> size(c)

ans =

     2    17

希望有帮助

您可以使用
cat
执行此操作。下面是一个较小的示例:

data = {{1,2,3};{4,5,6};{7,8,9};{10,11,12}};
size(data)
ans =

   4   1

newData = cat(1,data{:});
size(newData)
ans =

   4   3
编辑: 如果您有一个字符串单元格数组,则可以执行以下操作:

data = {{'123'};{'456'};{'789'};{'abc'}};
size(data)
ans =

   4   1

data2 = cat(1, data{:});
data3 = cell2mat(newData);
size(data3)
ans =

   4   3

data3 =

123
456
789
abc

可以使用
cat
执行此操作。下面是一个较小的示例:

data = {{1,2,3};{4,5,6};{7,8,9};{10,11,12}};
size(data)
ans =

   4   1

newData = cat(1,data{:});
size(newData)
ans =

   4   3
编辑: 如果您有一个字符串单元格数组,则可以执行以下操作:

data = {{'123'};{'456'};{'789'};{'abc'}};
size(data)
ans =

   4   1

data2 = cat(1, data{:});
data3 = cell2mat(newData);
size(data3)
ans =

   4   3

data3 =

123
456
789
abc

试着这样做:

temp_data = importdata('my_data.data');
data = cell(size(temp_data,1),17);
for x=1:size(temp_data,1)
    data(x,:) = strsplit(temp_data{x}, ',');
end
clear temp_data;

试着这样做:

temp_data = importdata('my_data.data');
data = cell(size(temp_data,1),17);
for x=1:size(temp_data,1)
    data(x,:) = strsplit(temp_data{x}, ',');
end
clear temp_data;

如果您没有R2013b,或者出于某种原因不想利用表,也可以这样做:

cellData = cell(numel(data), 17);  % preallocate
for idx=1:numel(data)
    cellData(idx,:) = strsplit(data{idx}, ',');
end

如果您没有R2013b,或者出于某种原因不想利用表,也可以这样做:

cellData = cell(numel(data), 17);  % preallocate
for idx=1:numel(data)
    cellData(idx,:) = strsplit(data{idx}, ',');
end

您好,这适用于您发布的示例,但不适用于我的示例。每个元素实际上都是一个字符串,而不是一个单元格数组(直到我运行我“关闭”的代码块)。有没有办法直接从字符串的单元格数组转换为nxm单元格数组,n=字符串的数量,m=字符串的长度?嗨,这对你发布的示例有效,但对我的示例无效。每个元素实际上都是一个字符串,而不是一个单元格数组(直到我运行我“关闭”的代码块)。有没有办法直接从字符串单元格数组转换为nxm单元格数组,n=字符串数量,m=字符串长度?谢谢,我用另一条与共和党行相反的伪造民主党行更新了我的答案:-)我还添加了如何将表转换为单元格数组,但那可能不是你想做的,我明白了。我不知道readtable只适用于r2013b。我正在使用r2013a。希望你的答案能对其他人有所帮助。谢谢,我用你的数据更新了我的答案,用的是另一条伪造的民主党行,与共和党行正好相反:-)我还添加了如何将表格转换为单元格数组,但这可能不是你想要做的。我明白了。我不知道readtable只适用于r2013b。我正在使用r2013a。希望你的回答能帮助别人。