【发布时间】:2014-04-02 06:20:52
【问题描述】:
假设我有一个包含 10 个值的矩阵 A。
这些值中的每一个都存在于单独的单元格中:
A = [A{1}, A{2}, A{3}, A{4}, A{5}, A{6}, A{7}, A{8}, A{9}, A{10}
假设我对这个矩阵应用了一个奇怪的虚构函数(奇怪,请不要太担心这个函数实际上做了什么!;))最终给了我 10 个不同的值:
B = strangef(A);
B(1,:) = [1.3, 4.2, 1.0, 2.3, 6.4, 0.9, 4.5, 2.6, 7.1, 3.1]
然后我寻找B中的最小值:
c = find(B==min(min(B)))
我发现它是 A 的第 6 个值,所以现在我想重建我的矩阵,使其排除第 6 个值,如下所示:
A = [A{1}, A{2}, A{3}, A{4}, A{5}, A{7}, A{8}, A{9}, A{10}]
我可以使用如下索引构造这个新矩阵:
col = 10; %number of columns
index = setdiff(1:col, c);
但是,虽然我可以在循环的第一次迭代中使用 c(列值),但如果此新矩阵的最小值为 A{3},则我的新矩阵缺少一个值,但此新矩阵中的列值具有只有 9 列是 2。
因此我实际上最终创建了这个矩阵:
A = [A{1}, A{3}, A{4}, A{5}, A{7}, A{8}, A{9}, A{10}]
而不是这个:
A = [A{1}, A{2}, A{4}, A{5}, A{7}, A{8}, A{9}, A{10}]
这是一些伪代码
excludingMinimums = [];
col = 10;
while col>1
index = setdiff(1:col,excludingMinimum)
for i = 1:col
A = [A{i}]
end
B = strangef(A)
c = find(B==min(min(B)))
excludingMinimums = [excludingMinimums, c]
col = col - 1;
end
【问题讨论】:
-
问题,是的,它与“strangef”有关-如果我们在每次运行该函数后将
NaNs引入A,那会是个问题吗?这会影响B = strangef(A);的结果吗,除了B中的对应元素也会是NaN?这会影响B中的其他值吗?