Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/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
matlab中双单元阵列的索引_Matlab_Indexing_Double_Cell_Cell Array - Fatal编程技术网

matlab中双单元阵列的索引

matlab中双单元阵列的索引,matlab,indexing,double,cell,cell-array,Matlab,Indexing,Double,Cell,Cell Array,我有一个名为Event的单元格数组,包含179X59个条目,每个元素都是双精度的 例如,事件{1,1}是一个14位的二进制数。。类似于01100001000,它通过第1列到第14列展开,因此每列都有一个位 现在,我的任务是通过单元格数组的每个元素建立索引,进入double并指定一个特定的字母表,如果我看到1,那么在第一位指定a 因此,如果我的字母表是从A到N的二进制11,需要 A B C D E F G H I J K L M N而不是该二进制数 因此,对于第二行给出的示例,我需要得到 0B00

我有一个名为
Event
的单元格数组,包含179X59个条目,每个元素都是双精度的

例如,
事件{1,1}
是一个14位的二进制数。。类似于
01100001000
,它通过第1列到第14列展开,因此每列都有一个位

现在,我的任务是通过单元格数组的每个元素建立索引,进入double并指定一个特定的字母表,如果我看到
1
,那么在第一位指定a

因此,如果我的字母表是从A到N的二进制
11
,需要

A B C D E F G H I J K L M N
而不是该二进制数

因此,对于第二行给出的示例,我需要得到

0B000000

最后应该返回
B,K
删除零


我尝试将每个元素分配到一个矩阵,并尝试使用strrep,但这对我没有帮助。

我认为时间不是关键,所以至少可以循环。草图:

alphabet = {A, B, C, D, E...}

j= 0;
for i=1:nBit
  if( Event{1,1}(i) == 1)
    EventAlphabet{1,1}{j} = alpabet{i};
    j = j + 1;
  end
end

你的问题有点不清楚,所以我的回答是一个大概的草图,可以帮助你不需要删除零。

alphabet = [11:24]; %// numbers. Replace values as needed
resultzeros = bsxfun(@times, alphabet, vertcat(Event{:}));
resultzeros = reshape(mat2cell(resultzeros, ones(1, size(resultzeros,1))), size(Event));
如果需要删除零,请执行以下操作:

result = cellfun(@(x) nonzeros(x).', resultzeros, 'uni', 0);

或直接:

result = cellfun(@(x) alphabet(x~=0), Event, 'uni', 0);

例如:

>> Event = {[0 0 1 0], [1 1 1 1]; [1 1 0 0], [0 0 1 1]};
>> alphabet = [4 5 6 7];
给予

代码

cellfun(@(x) cellstr(char(nonzeros(x.*[65:65+numel(x)-1])))', Event,'uni',0)
结果

对于示例
事件

Event = {
    [0 1 0 1 0 0 1] [0 1 0 1 0];
    [0 1  1 1 0] [0 0 0 1 1 1 0 0 0 0 1 1 0 1]}
输出-

>> Event{:}
ans =
     0     1     0     1     0     0     1
ans =
     0     1     1     1     0
ans =
     0     1     0     1     0
ans =
     0     0     0     1     1     1
>> out{:}
ans = 
    'B'    'D'    'G'
ans = 
    'B'    'C'    'D'
ans = 
    'B'    'D'
ans = 
    'D'    'E'    'F'
当然,
Event
中“较高级别”的列数和行数由
out
-

>> Event
Event = 
    [1x7 double]    [1x5  double]
    [1x5 double]    [1x14 double]
>> out
out = 
    {1x3 cell}    {1x2 cell}
    {1x3 cell}    {1x6 cell}

A
etc是数字,对吗?感谢各位的回复,这些回复应该会有所帮助,谢谢Aton@user3683939如果有任何答案帮助你解决你的问题,请考虑通过点击答案左上角的绿色复选标记来接受它。@ USER 36839 39阅读关于接受答案的更多信息。
>> Event
Event = 
    [1x7 double]    [1x5  double]
    [1x5 double]    [1x14 double]
>> out
out = 
    {1x3 cell}    {1x2 cell}
    {1x3 cell}    {1x6 cell}