我有一个列表(单元格数组)的元素与这样的结构:
mystruct = struct('x', 'foo', 'y', 'bar', 's', struct('text', 'Pickabo'));
mylist = {mystruct <more similar struct elements here>};
Run Code Online (Sandbox Code Playgroud)
现在我想为s.text =='Pickaboo'或其他预定义字符串的所有结构过滤mylist.在MATLAB中实现这一目标的最佳方法是什么?显然这对于数组来说很容易,但对于单元格来说,最好的方法是什么?
我有两个字符串的单元格数组,我想检查它们是否包含相同的字符串(它们不必按相同的顺序排列,也不知道它们是否具有相同的长度).
例如:
a = {'2' '4' '1' '3'};
b = {'1' '2' '4' '3'};
Run Code Online (Sandbox Code Playgroud)
要么
a = {'2' '4' '1' '3' '5'};
b = {'1' '2' '4' '3'};
Run Code Online (Sandbox Code Playgroud)
首先我想到了,strcmp但它需要循环一个单元格内容并与另一个进行比较.我也考虑ismember使用类似的东西:
ismember(a,b) & ismember(b,a)
Run Code Online (Sandbox Code Playgroud)
但是我们事先并不知道它们的长度相同(显然是不平等的情况).那么,如果不编写过多的if/else案例,你将如何以最有效的方式进行这种比较.
使用cellfun,如何将函数应用于函数创建的所有单元格mat2cell?我的函数在另一个文件中定义,这里引用它myFunc.该函数有两个参数,它们应该是一个单元格和一个整数.
例如 function H = myFunc(img,Q)
我的代码如下:
% Split into grid and process each cell
width = size(img,2) % get image width
height = size(img,1) % get image height
depth = size(img,3) % get depth
C = mat2cell(img,[height/2 height/2],[width/2 width/2],[depth/2 depth/2]); % divides image into sections
F = cellfun(@myFunc,C);
save(fout,'F');
Run Code Online (Sandbox Code Playgroud)
问题当然在于这条线F = cellfun(@myFunc,C);.如何myFunc为每个单元格传递单元格和选定的整数,例如4 ?
非常感谢.
我有A维度的单元格数组m * k.
我想保持A唯一的行数达到k个单元格的顺序.
的"棘手"的部分是"高达K个小区的顺序":考虑k了在细胞中i的第i行A,A(i,:); 有可能是一个连续j的A,A(j,:)即相当于A(i,:)达到它的重新排序k的细胞,这意味着,例如,如果k=4它可能是:
A{i,1}=A{j,2}
A{i,2}=A{j,3}
A{i,3}=A{j,1}
A{i,4}=A{j,4}
Run Code Online (Sandbox Code Playgroud)
我现在正在做的是:
G=[0 -1 1; 0 -1 2; 0 -1 3; 0 -1 4; 0 -1 5; 1 -1 6; 1 0 6; 1 1 6; 2 -1 6; 2 0 6; 2 1 6; 3 -1 6; 3 0 6; …Run Code Online (Sandbox Code Playgroud) 我是Python的新手,并尝试创建与Matlab的"单元阵列"相当的东西.假设我有100个客户索引"C001","C002"等,我为每个客户提供不同的数据:
在Python 2.7中构建数据集的最佳方法是什么,它结合了单值,分类数据和时间索引数组?我正在尝试使用大熊猫,但到目前为止还没有成功.
非常感谢你提前
我不知道这里发生了什么.我正在使用R2006b.在我提交错误报告之前,任何有新版本的人都可以测试他们是否得到相同的行为?
代码:( bug1.m)
function bug1
S = struct('nothing',{},'something',{});
add_something(S, 'boing'); % does what I expect
add_something(S.something,'test'); % weird behavior
end
function add_something(X,str)
disp('X=');
disp(X);
disp('str=');
disp(str);
end
Run Code Online (Sandbox Code Playgroud)
输出:
>> bug1
X=
str=
boing
X=
test
str=
??? Input argument "str" is undefined.
Error in ==> bug1>add_something at 11
disp(str);
Error in ==> bug1 at 4
add_something(S.something,'test');
Run Code Online (Sandbox Code Playgroud)
看起来像空虚/虚无S.something允许它移动函数调用的参数.这看起来像非常糟糕的行为.在短期内我想找到它周围(我正在尝试创建一个函数,将项添加到最初为空的单元格数组,该数组是结构的成员).
编辑:
推论问:所以没有办法构造一个struct包含任何空单元格数组的文字?
我有一个allDataNx1 的单元格数组.每个单元格都包含一个带有names属性的结构(名称是自定义对象,但如果您愿意,可将其视为字符串的单元格数组).我想创建一个包含所有名称的单个单元格数组.例如,如果N = 3,那么这allData是一个3x1单元格数组,那么以下内容将实现我的目标:
A = allData{1};
B = allData{2};
C = allData{3};
allNames = [A.names B.names C.names];
Run Code Online (Sandbox Code Playgroud)
这种方法的问题在于N很大并且根据输入而变化,所以我希望有一种聪明的方法可以使用cellfun,但是我尝试过的所有东西都失败了(例如它不起作用)allNames = [cellfun(@(x) {x.names}, allData)];).
更新:由于建议的解决方案,我可以将所有内容放入一个单元阵列中,其中每个单元包含一个单元阵列.我的目标是连接这些.或多或少,我所拥有的是:
{A.names B.names C.names}
Run Code Online (Sandbox Code Playgroud)
我想要什么,似乎无法得到的是
{A.names{1} A.names{2} ... A.names{end} B.names{1} ... B.names{end} ...}
Run Code Online (Sandbox Code Playgroud)
解决方案:我需要以下每个答案的部分,所以这里有适合我的解决方案:
allNames = arrayfun(@(x) x.name, [allData{:}], 'UniformOutput', false);
然后,从gnovice:
allNames = vertcat(allNames{:});
谢谢两个!!
在matlab中,我有一个4x5单元阵列,其中每个单元由一个121x1向量组成.
什么是创建一个3-暗淡4x5x121矩阵避免了2倍环的最简单的方法.
我在MATLAB中有一个单元数组,可以说它cell_arr有零条目以及非零单元条目.例如:
cell_arr = {0, 0, 0, 0, 0, {1x3 cell}, {1x3 cell}, {1x3 cell}, {1x3 cell}};
Run Code Online (Sandbox Code Playgroud)
有人可以告诉如何从cell_arr或删除这些零条目,以找到非零条目的索引?另外,我想避免for执行此作业的循环.
我已经尝试过find函数,但是,find函数不适用于单元格数组.我想知道是否存在执行此作业的单行语句/表达式?
我有一个嵌套的单元格细胞,如下所示:
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必须在随机选择过程中具有相同的机会.谢谢.
cell-array ×10
matlab ×10
matrix ×2
comparison ×1
divide ×1
filtering ×1
list ×1
performance ×1
permutation ×1
python ×1
random ×1
string ×1