- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我主要使用 bsxfun 对我的代码进行矢量化,但我遇到了一个我无法完全破解的场景。这是一个小问题示例。我想删除此代码中的 for 循环,但我很难处理 tempEA 行。
Index = [2; 3; 4;];
dTime = [25; 26; 27; 28; 25; 26; 27; 28; 27; 28];
dIndex = [3; 3; 3; 2; 1; 3; 2; 4; 4; 2];
aTime = [30; 38; 34; 39; 30; 38; 34; 39; 34; 39];
aIndex = [4; 2; 5; 4; 5; 4; 4; 2; 2; 4];
EA = zeros(numel(Index));
for i = 1:numel(Index)
for j = 1:numel(Index)
tempEA = aTime(Index(i) == dIndex(:,1) & Index(j) == aIndex(:,1));
if i == j
elseif tempEA > 0
EA(i,j) = min(tempEA);
else
EA(i,j) = 50;
end
end
end
答案应该是这样的:
EA =
0 50 34
38 0 30
34 50 0
提前感谢您的帮助。
最佳答案
这使用 bsxfun
;没有循环。它假定您没有 NaN
在你的aTime
中值(value)观。
N = numel(Index);
ii = bsxfun(@eq, dIndex.', Index); %'// selected values according to each i
jj = bsxfun(@eq, aIndex.', Index); %'// selected values according to each j
[ igrid jgrid ] = ndgrid(1:N); %// generate all combinations of i and j
match = double(ii(igrid(:),:) & jj(jgrid(:),:)); %// each row contains the matches for an (i,j) combination
match(~match) = NaN; %// these entries will not be considered when minimizing
result = min(bsxfun(@times, aTime, match.')); %'// minimize according to each row of "match"
result = reshape(result,[N N]);
result(isnan(result)) = 50; %// set NaN to 50
result(result<=0) = 50; %// set nonpositive values to 50
result(1:N+1:end) = 0; %// set diagonal to 0
行result(result<=0) = 50;
仅在您的 aTime
时才需要可以包含非正值。它可以?或者是你的 elseif tempEA > 0
只是一种检查 tempEA
的方法不为空?
关于MATLAB bsxfun 或向量化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19744447/
我有一个二元函数,大致看起来像 func=@(i,j)exp(-32*(i-j)^2); 网格如下 [X Y]=meshgrid(-10:.1:10); 奇怪的是,arrayfun 会产生正确的结果,
这是做什么的? u = [5 6]; s = [1 1]; data1 =[randn(10,1) -1*ones(10,1)]; data2 =[randn(10,1) ones(10,
在 Matlab R2016a 中,我有一大组成对的小 X 向量和 Y 向量(例如,10,000 个 1x3 X 向量与 10,000 个 1x3 Y 向量配对)。对于每个 {X,Y} 对,我想为 X
我有两组(50 个训练和 25 个测试)大小为 42 的直方图集。(这些数字是任意的,它们在现实中会更大,所以我正在寻找一种有效的方法。而且约定可能是相反的在转置方面,请随意使用任何约定 [featu
我主要使用 bsxfun 对我的代码进行矢量化,但我遇到了一个我无法完全破解的场景。这是一个小问题示例。我想删除此代码中的 for 循环,但我很难处理 tempEA 行。 Index = [2; 3;
这里主要想研究两点- bsxfun 有六个内置关系运算:@eq (equal)、@ne(不等于)、@lt(小于)、 @le(小于或等于)、@gt(大于) 和 @ ge(大于或等于)。很多时候我们将它们
我有一个问题。我正在尝试实现这段简短的代码。 我已经完成了基本步骤。请在下面检查我的代码: clc;clear all;close all; A=round(-3+(6).*rand(5,5)); B
我想将逐个元素的二元运算应用于大型逻辑向量。这些向量的内容是错误的,因此出于性能考虑,最好使用稀疏矩阵。如果我这样做,结果矩阵是不正确的。 例子 A = logical([0;1;0;0]); B =
我正在做一个关于神经网络的项目,我的工作介质是 Matlab。运行以下代码时: net=train(net, feat_mat, gt_mat); 我使用的神经网络是具有 3 个隐藏层的 ffnn。
假设我有 2 个向量,我想做一个外积。我可以使用: A=x*y'; 或者我可以像这样使用bsxfun: bsxfun(@times,x,y') 但我想批量生产外部产品。我有 2 个矩阵,每个矩阵都包含
我在 MATLAB 中有两个数组: A; % size(A) = [NX NY NZ 3 3] b; % size(b) = [NX NY NZ 3 1] 事实上,在三维域中,我为每个 (i, j,
在尝试理解 bsxfun 函数后,我尝试在脚本中实现它以避免循环。我试图检查数组中的每个单独元素是否包含在一个矩阵中,返回一个与分别包含 1 和 0 的初始数组大小相同的矩阵。我创建的匿名函数是: m
我正在使用 bsxfun在大小矩阵之间通过单例扩展对操作进行矢量化: MS: (nms, nls) KS: (nks, nls) 运算是对每个值的绝对差求和MS(m,l)与 m在1:nms和 l在1:
使用 MATLAB,想象一个 Nx6 的数字数组,它代表 N 个具有 3+3=6 个起始点和终点坐标的线段。 假设我有一个 function Calc_Dist( Segment_1, Segment
对于非数字数据,是否有等价于 bsxfun 的方法? 例如,我想比较存储在两个元胞数组中的所有字符串对: >> a = {'aa', 'bb', 'cc'}; >> b = {'dd', 'aa'};
我需要将矩阵 A 与 n 个矩阵相乘,然后得到 n 矩阵。例如,将 2x2 矩阵与 3 个堆叠为 2x2x3 Matlab 数组的 2x2 矩阵相乘。 bsxfun 是我通常在这种情况下使用的,但它只
在我的工作(计量经济学/统计学)中,我经常需要将不同大小的矩阵相乘,然后对生成的矩阵执行其他操作。我一直依靠 bsxfun() 来矢量化代码,总的来说我发现它比 repmat() 更有效。但我不明白的
一如既往地想向您学习更多信息,我希望我能在以下代码方面得到一些帮助。 我需要完成以下任务: 1) 我有一个向量: x = [1 2 3 4 5 6 7 8 9 10 11 12] 2) 和一个矩阵:
我有一个 double 的 2092x252 矩阵s 并且需要创建一个 for使用 bsxfun 的循环.对于这个例子,我们只说bsxfun(@minus) .我需要循环完成的是运行 bsxfun(@
从 bsxfun 的 Matlab 文档中给出了一个示例: fun = @(A,B) A.*sin(B); A = 1:7; B = pi*[0 1/4 1/3 1/2 2/3 3/4 1].'; %
我是一名优秀的程序员,十分优秀!