小编Cha*_*had的帖子

如何在MATLAB中访问嵌套在单元数组中的结构数组的所有字段元素?

这是为此问题创建示例单元数组的代码:

mycell = cell([5,1]);
for i = 1 : size(mycell)
    mystruct = struct();
    mycell{i} = mystruct;
    mycell{i}.field1 = i;
end
Run Code Online (Sandbox Code Playgroud)

我期望mycell{:}.field1做我想做的事,但它给出了一个错误.我可以使用以下for循环:

for i = 1 : size(mycell)
    mycell{i}.field1
end
Run Code Online (Sandbox Code Playgroud)

但我更喜欢更简单或更优雅的解决方案,因为想要将mycell.field1的所有元素用作绘图中的y变量.有任何想法吗?

matlab struct cell-array

10
推荐指数
1
解决办法
1万
查看次数

如何在Dymola/Modelica的启动路径中添加自定义程序包?

我有一个自定义包,我发现自己在Dymola模型中反复重复使用,我想将这个包放在一个公共目录中,每当我启动Dymola时它会自动加载.我当前的策略是在加载我正在处理的模型时加载自定义包,然后保存总计.这并不优雅,因为自定义包的内容最终保存在我的硬盘驱动器的多个位置,如果我更改其中一个,则更改不会反映在任何地方.我想要一种更健壮的方式将这个自定义包分发给我的所有模型.有没有办法告诉Dymola每次自动加载我的自定义包装?

modelica dymola

4
推荐指数
1
解决办法
2480
查看次数

使用 Rust proc 宏生成动态命名的结构体实例方法

我正在尝试编写一个过程宏,它生成将所有字段加倍的方法f64。我让它在 ./src/main.rs 的单个字段中工作

use attr_macro::DoubleF64;

#[derive(DoubleF64)]
struct MyStruct {
    my_string: String,
    my_number: f64,
    my_other_number: f64,
}


fn main() {
    let mystruct = MyStruct {
        my_string: "some str".to_string(),
        my_number: 2.0,
        my_other_number: 2.0,
    };
    println!("my_number * 2: {}", mystruct.double_my_number());
}

Run Code Online (Sandbox Code Playgroud)

和./proc_macro/src/lib.rs:

extern crate proc_macro;
use proc_macro::TokenStream;
use quote::{format_ident, quote};
use syn::{parse_macro_input, DeriveInput, FieldsNamed};

#[proc_macro_derive(DoubleF64)]
pub fn double_f64(input: TokenStream) -> TokenStream {
    let DeriveInput { ident, data, .. } = parse_macro_input!(input);

    let (func_name, fident) = if let syn::Data::Struct(s) = data { …
Run Code Online (Sandbox Code Playgroud)

macros rust rust-proc-macros

4
推荐指数
1
解决办法
2859
查看次数

在modelica中集成函数

我想在Modelica中执行除时间之外的变量函数的集成,但我不知道该怎么做.例如,如何评估x dx与上限5和下限2的积分?

?x dx=x^2/2
Run Code Online (Sandbox Code Playgroud)

modelica openmodelica

3
推荐指数
1
解决办法
3044
查看次数

Matlab内联VS匿名函数

是否有充分的理由在MATLAB中使用内联函数与匿名函数之间进行选择?这里已经提出并回答这个确切的问题,但答案对新手MATLAB用户没有帮助,因为代码片段不完整,所以当粘贴到MATLAB命令窗口时它们不会运行.有人可以提供可以粘贴到MATLAB的代码片段的答案吗?

matlab anonymous-function inline-functions

3
推荐指数
1
解决办法
6261
查看次数

使用dict访问Python中嵌套的类实例

我试图在嵌套类中定义一个属性,然后使用字符串或字符串列表访问它.这是我正在尝试做的代码

class MyNestedClass(object):
    def __init__(self):
        self.att1 = 5.

class MyClass(object):
    def __init__(self):
        self.my_nested_inst = MyNestedClass()

my_inst = MyClass()
Run Code Online (Sandbox Code Playgroud)

我想改变my_inst.my_nested_inst.att1我所拥有的是一个像这样的列表的值:my_list = ['my_inst','my_nested_inst','att1'].

如果我用这个:

vars(vars(vars()[my_list[0]])[my_list[1]])[my_list[2]]
Run Code Online (Sandbox Code Playgroud)

这是有效的,但问题是我需要将它扩展到任意深度的嵌套实例.我无法找到一个好的方法来使用for循环工作.任何帮助是极大的赞赏.

此外,请注意,在全局命名空间中将字符串转换为变量名称已得到很好的解决,但这些答案似乎都不适用于此处.

编辑1:我会试着解释为什么我这样做,如果我做的很难解释,请告诉我.我使用scipy.optimize.fmin,我一直只使用4个参数进行优化.但是,我现在想扩展我的优化代码来处理任意数量的参数,其中一些是嵌套属性,在层/实例层次结构中有几层.我希望能够在顶层创建一个列表或字典,告诉fmin如何解压缩参数数组以设置嵌套属性.

python namespaces nested-attributes

2
推荐指数
1
解决办法
1186
查看次数

在MATLAB中,cellfun是否总是可以用arrayfun替换?

我发现了一个例子,2007年MATLAB中,cellfunarrayfun几乎可以互换使用:

>> cellfun(@(c) c, {'one' 'two' 'three'}, 'uniformoutput', 0)
% ans = 
%    'one'    'two'    'three'
>> arrayfun(@(c) c, {'one' 'two' 'three'})
% ans = 
%    'one'    'two'    'three'
Run Code Online (Sandbox Code Playgroud)

我也可以想到一个有效的例子,arrayfuncellfun不是:

>> arrayfun(@(c) c, [1 2 3])
% ans =
%      1     2     3
>> cellfun(@(c) c, [1 2 3])
% ??? Error using ==> cellfun
% Input #2 expected to be a cell array, was double instead.
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有可行的情况cellfun但却arrayfun没有?如果是,请举例.如果不是,为什么 …

arrays matlab

2
推荐指数
1
解决办法
3115
查看次数

如何获得Vec的相邻差值?

获得Vec此 Python 代码的 Rust 等效项的最惯用方法是什么?

import numpy as np
a = np.arange(5)
a_diff = np.diff(a) # this is the thing I'm trying to emulate in Rust
print(a_diff) # [1 1 1 1]
Run Code Online (Sandbox Code Playgroud)

我可以想出多种不令人满意的方法来做到这一点,但我认为必须有一种使用干净的单行方法iter(),对吧?

let a: Vec<f64> = (0..5).collect::<Vec<i64>>().iter().map(|x| *x as f64).collect();
let a_diff = ???
Run Code Online (Sandbox Code Playgroud)

vector rust

1
推荐指数
1
解决办法
313
查看次数