申请在MATLAB
电池元件的功能我有neighh1即1由10个细胞申请在MATLAB
neighh1 =
列1至6
[5x1 double] [3x1 double] [3x1 double] [7x1 double] [4x1 double] [5x1 double]
列7至10
[4x1 double] [4x1 double] [3x1 double] [4x1 double]
我想取两个neighh1单元格,例如neighh1 {1} & neigh H1 {3}
neighh1 {1} =
neighh1 {3} =
我有矩阵N是一个二维数组,它包含0 & 1, 然后我想ch eck如果N(i,j)== 1或不。其中i & j是neighh1的元素{1} & neighh1 {3} 因此,如果N(4,7)== 1欲保存4 & 7在一个新的矩阵
根据您的意见,你只是在寻找一种方式来访问一个单元格的内容。
我认为你正在寻找的东西是这样的:
for t=1:numel(neighh1{1})
for k = 1:numel(neigh1{3})
N(neighh1{1}(t),neigh1{3}(k))
end
end
如果你想要将其值直接在循环添加到矩阵,你可以这样做:
M=[];
for t=1:numel(neighh1{1})
for k = 1:numel(neigh1{3})
x = neighh1{1}(t);
y = neigh1{3}(k);
if N(x,y)
M(end+1,:) = [x y];
end
end
end
这个想法我做到了,我的新问题将是如何保存结果。例如:如果N(4,7)== 1;我想在一个新矩阵中保存4和7,我该怎么做这样的事情? – user3685062 2014-09-03 14:20:22
@ user3685062怎么样:'M = []; M(end + 1,:)= [4 7]',如果你知道需要存储多少结果,你可以预先分配合适大小的'M'来提高效率。 – 2014-09-03 14:21:28
,但是当你访问neighh1中的特定元素时,这种特殊情况并不是一般的循环内部元素。 – user3685062 2014-09-03 14:30:23
那么这是可能的,最简单的但是,如果您想将其应用于所有元素,关键是,你使用电池的一个子集,并通过cellfun
cellfun(@length, neighh([1, 3]))
它返回该Vector [5, 3]
应用功能的所有元素。
A = {[1:4].',[1:3].',[4:7].',[1:7].'}
A =
[4x1 double] [3x1 double] [4x1 double] [7x1 double]
要对所有元素执行功能,您可以用cellfun
直截了当这样的:
B = cellfun(@sin, A, 'uni', 0);
您可以在此之后用你想用普通索引的细胞。
如果你真的要执行一个功能只在小区2和3,你可以这样做:
B = cellfun(@sin, A([2, 3]), 'uni', 0);
你能给一个你想要应用的函数的例子吗?你试过什么了? – sclarke81 2014-09-03 11:11:15
看看内置函数'cellfun' http://www.mathworks.in/help/matlab/ref/cellfun.html – Nishant 2014-09-03 11:13:04
actully它不是MATLAB中的函数,函数是N,其中N是一个2-包含0&1的二维数组,所以我想检查是否N(i,j)== 1。我在哪里是neighh1 {1}&neighh1 {3}的元素 – user3685062 2014-09-03 11:16:09