假设我有两个(大)向量a=[0 0 0 0 0]
并且b=[1 2 3 4 5]
具有相同的大小和一个索引向量ind=[1 5 2 1]
,其值为{1,...,length(a)}.我想计算
for k = 1:length(ind)
a(ind(k)) = a(ind(k)) + b(ind(k));
end
% a = [2 2 0 0 5]
Run Code Online (Sandbox Code Playgroud)
也就是说,我想将b
声明的条目添加ind
到a
包括多重性.
a(ind)=a(ind)+b(ind);
% a = [1 2 0 0 5]
Run Code Online (Sandbox Code Playgroud)
当然要快得多,但忽略多次出现的指数.
我怎样才能加快上面的代码?
我试图HStack
在 SwiftUI 中包含自定义行,Form
如下所示:
var body: some View {
Form {
TextField("Text", text: .constant("test"))
Toggle("Toggle", isOn: .constant(true))
.toggleStyle(SwitchToggleStyle())
HStack {
Text("Label")
MenuButton("Menu") {
Button(action: {
print("Clicked Pizza")
}) { Text("Pizza") }
Button(action: {
print("Clicked Pasta")
}) { Text("Pasta") }
}
TextField("Topping", text: .constant("Cheese"))
.labelsHidden()
}
}
.padding()
}
Run Code Online (Sandbox Code Playgroud)
导致
但是,我希望与切换Label
垂直对齐Toggle
并垂直对齐。Menu
是否有选择自定义行对齐模式的标准方法HStack
?
我有一个巨大的矩阵MxN
基质,就是说,A=rand([M,N]);
和具有索引向量N
之间的整数值1
和M
,也就是说,RandomIndex = randi(M,[1,N]);
.
现在我想生成一个带有条目的行向量
result = [A(RandomIndex(1),1), A(RandomIndex(2),2), ..., A(RandomIndex(N),N)]
Run Code Online (Sandbox Code Playgroud)
什么是有效的方法呢?它应该是一个非常便宜的操作,但我的所有实现都很慢.我不认为Matlab中有一个符号可以直接执行此操作,是吗?
到目前为止最快的选择是
indexFunction = @(r,c) A(r,c);
result = cell2mat(arrayfun(indexFunction,RandomIndex,1:N,'UniformOutput',false));
Run Code Online (Sandbox Code Playgroud)
有更有效的方法吗?