我想制作一个嵌套的单元格数组,如下所示:
tag = {'slot1'}
info = {' name' 'number' 'IDnum'}
x = {tag , info}
Run Code Online (Sandbox Code Playgroud)
我希望能够打电话x(tag(1))并让它显示出来'slot1'.相反,我收到此错误:
??? Error using ==> subsindex
Function 'subsindex' is not defined for values of class 'cell'.
Run Code Online (Sandbox Code Playgroud)
如果我调用x(1)MATLAB显示{1x1 cell}.我希望能够访问列表中的第一个单元格,x以便我可以与另一个字符串进行字符串比较.
我知道如果MATLAB的内置类不起作用但是有一个解决这个问题的简单技巧,我可以编写自己的类来做这个吗?
有没有一种简单的方法可以在较大的字符串中找到较小的字符串数组?我有两个列表,一个有独特元素,另一个有重复元素.我想在较大的数组中找到较小数组的特定模式的全部出现.我知道strcmp会比较两个单元格数组,但前提是它们的长度相等.我的第一个想法是使用循环遍历较大阵列的子集,但必须有一个更好的解决方案.
例如,在以下内容中:
smallcellarray={'string1',...
'string2',...
'string3'};
largecellarray={'string1',...
'string2',...
'string3',...
'string1',...
'string2',...
'string1',...
'string2',...
'string3'};
index=myfunction(largecellarray,smallcellarray)
Run Code Online (Sandbox Code Playgroud)
会回来的
index=[1 1 1 0 0 1 1 1]
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以使用该mat2cell函数将MxN矩阵划分为具有相同列大小的10个子矩阵N,并且行大小大致相同~M/10?如果mod(M, 10) == 0那么所有子矩阵将具有相同的大小,否则一些矩阵将具有+/- 1行.这是通过mat2cell功能吗?
作为参考,如果行大小都相同,那么它非常简单,如下所述:
如何将矩阵划分为等于零件?
假设我有一个(n X 1)个向量A的单元格数组,以及一个包含索引的向量的单元格数组A,被称为B.我希望提取一个单元格数组C,这样C{i} = [A{B{i}}].
换句话说,我有一个索引数组的单元格数组,我想拉出与A每个索引数组索引的向量级联相对应的矩阵.
for i = 1:length(B)
%# B{i} is an array of indices, C{i} is a matrix
C{i} = [ A{ B{i} } ];
end
Run Code Online (Sandbox Code Playgroud)
循环相当于:
C = cellfun(@(x)[A{x}],B,'UniformOutput',false); %# implicit for loop w/ closure
Run Code Online (Sandbox Code Playgroud)
我可以单独使用索引表达式吗?或者至少没有循环?
我想deal()可能必须参与,但无法弄明白.
我正在使用符号工具箱来生成matlab函数.但是生成函数的输入数量随着我需要的对象数量(例如,开关数量)而变化.对于2和3个开关,生成的函数看起来像这样:
y = fun(a1,a2,b1,b2)
y = fun(a1,a2,a3,b1,b2,b3)
Run Code Online (Sandbox Code Playgroud)
在使用此函数的脚本中,我建立了这些参数的向量:
a = [a1 a2 ...]
Run Code Online (Sandbox Code Playgroud)
我想要的是直接调用生成的函数或者创建一个包装器函数,这样我在更改开关数时就不需要更改调用语句了.为了使这个问题更加复杂,这些变量是ACADO变量.这意味着不允许矩阵和元素操作(即,必须使用标量完成所有数学运算,并且必须为标量编写符号工具箱中的公式).
我有一个嵌套的单元格细胞,如下所示:
CellArray={1,1,1,{1,1,1,{1,1,{1,{1 1 1 1 1 1 1 1}, 1,1},1,1},1,1,1},1,1,1,{1,1,1,1}};
我需要随机选择一个位置CellArray.所有成员的位置CellArray必须在随机选择过程中具有相同的机会.谢谢.
我有一个(大)单元阵列,具有各种数据类型.例如,
myCell = { 1, 2, 3, 'test', 1 , 'abc';
4, 5, 6, 'foob', 'a', 'def' };
Run Code Online (Sandbox Code Playgroud)
这可能包括更多模糊的类型,如java.awt.Color对象.
我想确保每列中的数据属于同一类型,因为我想对其执行类似表的操作.但是,这个过程似乎很慢!
我当前的方法是用来cellfun获取类,并strcmp检查它们
% Get class of every cell element
types = cellfun( @class, myCell, 'uni', false );
% Check that they are consistent for each column
typesOK = all( strcmp(repmat(types(1,:), size(types,1), 1), types), 1 );
% Output the types (mixed type columns can be handled using typesOK)
types = types(1, :); …Run Code Online (Sandbox Code Playgroud) 如何从Matlab中的单元格数组中删除最后一个元素?
记录方法不起作用:
>> A = {'a', 'b', 'c'}
A =
1×3 cell array
'a' 'b' 'c'
>> A{end}=[]
A =
1×3 cell array
'a' 'b' []
Run Code Online (Sandbox Code Playgroud)
我需要阵列成为1x2.
A = {'A'; 'E'; 'A'; 'F'};
B = {'A';'B';'C';'D';'E'; 'F'};
Run Code Online (Sandbox Code Playgroud)
我试图获取单元格数组中的每个字符串A,该索引与单元格数组中的该字符串匹配B.A会有重复的价值,B不会.
find(ismember(B, A) == 1)
Run Code Online (Sandbox Code Playgroud)
输出
1
5
6
Run Code Online (Sandbox Code Playgroud)
但我想得到
1
5
1
6
Run Code Online (Sandbox Code Playgroud)
优选地在一个衬里中.我不能使用strcmp而不是ismember,因为向量是不同的大小.
向量实际上将包含日期字符串,我需要索引不是逻辑索引矩阵,我对不使用它进行索引的数字感兴趣.
我该怎么做?
我是matlab的新手,我试图找出何时最好使用单元格,表格或矩阵来存储数据集,然后处理数据.
我想要的是存储包含多个行,包括字符串和数字,然后想要使用数字的数据.
例如,一条线看起来像
'string 1' , time, number1, number 2
Run Code Online (Sandbox Code Playgroud)
.我知道如果元素是数字,矩阵效果最好,但是当我使用单元格时,我不得不将数字或字符串转换为矩阵才能使用它们.我正在运行matlab 2012所以也许这是问题的一部分.任何帮助表示赞赏.谢谢!