【问题标题】:MATLAB QUESTIONS on logical indexing and cell2struct function关于逻辑索引和 cell2struct 函数的 MATLAB 问题
【发布时间】:2015-05-17 11:58:25
【问题描述】:

第一个问题: 你好!

我正在尝试分配这个向量

v(mod(v,2)~=0)=0

这些操作应该用 0 替换向量中的奇数。我正在尝试将此向量分配给函数中的结果变量。

我尝试这个时出了点问题 功能

 function [result1,result2] = myfunction(v)
 v(mod(v,2)==0)= 0; 
result1 = v;

v(mod(v,2)~=0) = 0; 
result2 = v; 
return

问题 2:

我正在尝试找出另一种方法来以 for-loop 格式表达函数 cell2struct

例如,

如果我们有一个包含食品标签的二维元胞数组。他们的名字、热量计数和价格,每一个都在一栏中。我们可以编写一个函数,将单元格中的信息传输到包含上述每个字段的结构体中吗?

谢谢

【问题讨论】:

    标签: matlab indexing logical-operators


    【解决方案1】:

    问题 #1

    您将所有偶数设置为 0,但随后您使用 此变异结果 来搜索奇数并将其设置为 0。这可能无法达到您的预期使用原始向量的修改后副本,因此在执行每个操作之前保留该向量的副本是谨慎的做法。

    function [result1,result2] = myfunction(v)
    vcopy = v; %// Make a copy
    vcopy(mod(vcopy,2)==0)= 0; %// Find even numbers and set to 0 
    result1 = vcopy;
    
    vcopy = v; %// Make another copy
    vcopy(mod(vcopy,2)~=0) = 0; %// Find odd numbers and set them to 0.
    result2 = vcopy; 
    return
    

    问题 #2

    是的。如果您有存储在f 中的字段名称列表以及存储在c 中的每个字段的对应实体,只需使用如下循环:

    function [s] = my_cell2struct(c, f)
    for idx = 1 : numel(f)
        s.(f{idx}) = c{idx};
    end
    

    上面的代码没有错误检查,所以你需要确保c中的元素总数与f的元素总数匹配。此外,cf 必须是元胞数组。请注意,函数中根本没有声明 s。此外,将点运算符与封闭括号和封闭括号内的字符串结合使用,可以让您动态地动态创建字段名称。因此,对于f 中的每个字符串,我们访问存储在c 中的相应值,并创建一个包含该值的字段名称。

    这是来自 MathWorks 文档的可重现示例:

    c = {'tree',37.4,'birch'};
    f = {'category','height','name'};
    s = cell2struct(c, f, 2)
    
    s = 
    
        category: 'tree'
          height: 37.4000
            name: 'birch'
    

    请注意,我在这里使用原生 MATLAB 中的 cell2struct 来生成上述结构。执行上述 for 循环,该循环包含在一个名为 my_cell2struct 的函数中,我们得到:

    c = {'tree',37.4,'birch'};
    f = {'category','height','name'};
    s =  my_cell2struct(c, f)
    
    s = 
    
        category: 'tree'
          height: 37.4000
            name: 'birch'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      相关资源
      最近更新 更多