假设我们有一个矩阵A(2x5),第一行包含数字:
1 2 3 5 7
和第二行:
0.4 0.1 0.2 0.1 0.2
此外,存在数字1,2,3 ... 10的10维向量B. 如何创建一个新的10维向量C,当A(1,:) == B,其他为0时,只包含A(第二行)的值。
所以新的向量C应该具有以下形式:
0.4 0.1 0.2 0 0.1 0 0.2 0 0 0
(对于不在A中的B的单元格,加零)。
我试过这个解决方案,但由于A和B之间的尺寸不同,我遇到了问题。
for i=1:53
if B(i) == A(1,i)
C{1,i} = A(2,i);
else
C{1,i}=0;
end
end
指数超出矩阵维度。
答案 0 :(得分:2)
您不熟悉之后会发生什么,但这至少可以提供所需的输出:
A
[我假设您的意思是10 元素向量,而不是10 维 ...]
如果您只想将B
的第一行用作索引而将第二行用作指定值,那么您根本不需要使用A = [1 2 3 5 7; 0.4 0.1 0.2 0.1 0.2];
C = zeros(1,10);
C(A(1,:)) = A(2,:)
并且您可以执行某些操作像这样:
for loop
答案 1 :(得分:2)
如何删除ismember
并使用A = [1 2 3 5 7; 0.4 0.1 0.2 0.1 0.2];
B = 1:10;
C = zeros(1,10);
C(B(ismember(B, A(1,:)))) = A(2,ismember(A(1,:),B));
函数进行内联:
A(1,:)
提示:即使我们碰巧B
中onClick
没有$(document).on('keypress', function(e) {
console.log(e.target);
var tag = e.target.tagName.toLowerCase();
if (tag == 'input' || tag == 'textarea')
{
if (event.keyCode != 13) {
if ($(this).val().length >= 1) {
$(this).parent().addClass('active');
} else {
if ($(this).val().length == 0) {
$(this).parent().removeClass('active');
}
}
}
}
});
没有的值,此解决方案仍然有效。
答案 2 :(得分:0)
使用ismember
和for
循环:
clc; clear;
A=[
1 2 3 5 7;
0.4 0.1 0.2 0.1 0.2
];
B = 1:10;
C = zeros(1,10);
for j = 1:10
if ismember(j, A(1,:))
C(j) = A(2, A(1,:) == j);
else
C(j) = 0;
end
end
C