Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >代码从Matlab到C#的转换

代码从Matlab到C#的转换
EN

Stack Overflow用户
提问于 2017-09-15 13:47:15
回答 1查看 82关注 0票数 1

我正在尝试将这个函数从matlab转换为C#

这些C#语句的等效matlab是什么?下面的C#部分显示了我不知道如何移植到C#matlab代码部分

代码语言:javascript
运行
AI代码解释
复制
   res(res == 0) = p * scale * unit(res == 0);
   W = min(unit, scale * p * (abs(res)).^ (-1));

整个matlab部分,以及我移植它的尝试

代码语言:javascript
运行
AI代码解释
复制
function W = huber(res, scale, param)
% function W = huber(res, scale, param)
%
% computes Huber's weight function for robust regression:
% min( 1, param/(|res|/scale) )
% 
% arguments:
%       res:    vector of residuals
%       scale:  robust estimate of scale, such as MAD
%       param:  parameter of the Huber function; the
%           default value is 2.5.
%
% returns:
%       W:  the vector of Huber weights
%
%
% P.B. Stark  stark@stat.berkeley.edu
% 9 July 1997.

p = 2.5;        % default parameter
if (nargin == 3),
    if (param > 0),
        p = param;
    else
        error('parameter must be positive')
    end
end

unit = ones(size(res));
res(res == 0 ) = p*scale*unit(res==0);
W = min(unit, scale*p*(abs(res)).^(-1));
return;

C#码。

代码语言:javascript
运行
AI代码解释
复制
public static double Hueber(double[] residuals, double scale, double param)
{
        //Calculation of the mean estimate for a given range using Huber's weights
        //The Huber's function is defined as min( 1, param/(|residuals|/scale))
        //param: a given parameter - affects the range where weights = 1
        //residuals: deviation from the mean estimate (I used the median as the first approximation)
        //scale: estimate of variation. Some use 1.483*(median absolute deviation, or MAD,
        // of the deviations of the data from their median). I used std, i.e. dblAveVar
        //See http://www.stat.berkeley.edu/~stark/Preprints/Oersted/writeup.htm

        double p = 2.5;        //default parameter
        if (param > 0)
            p = param;
        else
            throw new Exception("parameter must be positive");

        double[] unit = Ones(residuals.Length);

        // What is the C# of this?
        //res(res == 0) = p * scale * unit(res == 0);
        //W = min(unit, scale * p * (abs(res)).^ (-1));

        return W;
    }

    public static double[] Ones(int length)
    {
        double[] ones = new double[length];

        ones.Populate(1.0);

        return ones;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-15 14:20:55

代码语言:javascript
运行
AI代码解释
复制
//res(res == 0) = p * scale * unit(res == 0);
//W = min(unit, scale * p * (abs(res)).^ (-1));

代码如下:

代码语言:javascript
运行
AI代码解释
复制
public static double Hueber(double[] residuals, double scale, double param)
{
  double p = 2.5;        //default parameter
  if (param > 0)
     p = param;
  else
     throw new Exception("parameter must be positive");

  for ( int i = 0; i < residuals.Length ; i++) {
     if ( residuals[i] == 0) {
         residuals[i] = p * scale * 1;  // res(res == 0 ) = p*scale*unit(res==0)
     }
     // Then we can do smae step in this loop W = min(unit, scale*p*(abs(res)).^(-1))
     residuals[i] = Math.Min(1, scale*p*Math.Abs(1/residuals[i]));
  }

  return residuals; // w = residuals[]
  }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46247871

复制
相关文章
System Generator从入门到放弃(四)-利用MCode调用MATLAB代码
System Generator是Xilinx公司进行数字信号处理开发的一种设计工具,它通过将Xilinx开发的一些模块嵌入到Simulink的库中,可以在Simulink中进行定点仿真,可以设置定点信号的类型,这样就可以比较定点仿真与浮点仿真的区别。并且可以生成HDL文件,或者网表,可以在ISE中进行调用。或者直接生成比特流下载文件。能够加快DSP系统的开发进度。
碎碎思
2020/06/29
2.3K0
MATLAB科学计算从入门到精通
MATLAB(Matrix Laboratory)是一种强大的科学计算软件,广泛用于工程、物理、数学、计算生物学和其他领域的数据分析、模拟和可视化。本文将带您从入门到精通,通过具体案例演示如何使用MATLAB进行科学计算。
海拥
2023/09/15
3060
【MATLAB 从零到进阶】 动画制作
comet(axes_handle,...)在句柄值为axes_handle的坐标系中显示动画
统计学家
2019/04/10
1.5K0
从C#到TypeScript - Proxy
用户1147588
2018/01/04
9600
从C#到TypeScript - 类型
本文介绍了C#和TypeScript的一些基本概念和语法,包括类型系统、变量声明、运算符、条件语句、循环语句、函数、数组和元组等。同时,也介绍了TypeScript的一些高级类型,如接口、类型保护、类型推断、字面量类型等。文章还介绍了如何在TypeScript中使用JavaScript的函数、对象和原型,以及如何使用TypeScript的装饰器进行更高级的函数装饰。最后,文章介绍了TypeScript的编译器和构建工具,包括Webpack和Vite等,以及如何使用TypeScript进行构建和打包。
用户1147588
2018/01/04
1.9K0
从C#到TypeScript - Reflect
从C#到TypeScript - Reflect 在C#里如果想只通过名字来生成类实例、获取属性或执行方法可以使用反射,反射是基于元数据,现在很多流行语言都支持元数据,以此来提供更多便利的功能。 E
用户1147588
2018/01/04
1.2K0
从C#到TypeScript - function
从C#到TypeScript - function 虽然TypeScript里有了类,但JavaScript的function也还在,这也是和C#的不同所在。 C#里函数不能脱离类工作,但TypeS
用户1147588
2018/01/04
1K0
从C#到TypeScript - 接口
从C#到TypeScript - 接口 为了更好的抽象出行为和属性,TypeScript在ES6的基础上增加了接口interface。 C#也有interface,不过TypeScript的接口还不
用户1147588
2018/01/04
1.4K0
从C#到TypeScript - Promise
从C#到TypeScript - Promise 背景 相信之前用过JavaScript的朋友都碰到过异步回调地狱(callback hell),N多个回调的嵌套不仅让代码读起来十分困难,维护起来也很
用户1147588
2018/01/04
1.6K0
从C#到TypeScript - Generator
用户1147588
2018/01/04
1.3K0
从C#到TypeScript - 类
本文介绍了从C#到TypeScript - 类的基础知识,包括类的定义、构造函数、属性、方法、继承、多态、泛型、接口和抽象类。TypeScript还支持接口和抽象类,提供了许多类和接口的示例。此外,TypeScript还支持泛型,可以与接口和抽象类一起使用。这些概念都是JavaScript编程语言中比较高级的概念,需要有一定的编程基础才能理解。
用户1147588
2018/01/04
1.1K0
从C#到TypeScript - 变量
从C#到TypeScript - 变量 TypeScript的变量声明和ES6差不多,相比之前主要是多了let和const 为什么不用var 不管是TypeScript还是ES6都会兼容以前的java
用户1147588
2018/01/04
9060
MATLAB好玩的代码_Matlab代码
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/29
1.5K0
【MATLAB 从零到进阶】day4 MATLAB程序设计
MATLAB作为一种程序设计语言,它提供了选择语句结构和循环语句结构,其中选择语句结构又包括:if/elseif条件转移语句结构,switch开关语句结构,try…catch试探语句结构;循环语句结构包括:for循环语句结构和while循环语句结构。除此之外,MATLAB还提供了continue、break、return和pause等流程控制函数
统计学家
2019/04/10
9560
【MATLAB 从零到进阶】day4  MATLAB程序设计
从C#到TypeScript - async await
从C#到TypeScript - async await 上两篇分别说了Promise和Generator,基础已经打好,现在可以开始讲async await了。 async await是ES7的议
用户1147588
2018/01/04
1.4K0
从C#到TypeScript - 高级类型
用户1147588
2018/01/04
1.1K0
从C#到TypeScript - 装饰器
用户1147588
2018/01/04
8870
Matlab的不同进制转换
Matlab的十进制、二进制和十六进制之间的转换 h0=figure('toolbar','none',... 'position',[200 150 350 200],... 'name','test'); e1=uicontrol('parent',h0,... 'units','points',... 'tag','e1',... 'style','edit',... 'backgroundcolor',[1 1 1],... 'position
用户9925864
2022/07/27
4670
Matlab的不同进制转换
【MATLAB 从零到进阶】day6 MATLAB绘图与可视化
图形窗口、线条、曲面和注释等都被看作是MATLAB中的图形对象,所有这些图形对象都可以通过一个被称为“句柄值”的东西加以控制,例如可以通过一个线条的句柄值来修改线条的颜色、宽度和线型等属性。这里所谓的“句柄值”其实就是一个数值,每个图形对象都对应一个唯一的句柄值,它就像一个指针,与图形对象一一对应。例如可以通过命令h = figure返回一个图形窗口的句柄值。
统计学家
2019/04/10
7790
【MATLAB 从零到进阶】day6 MATLAB绘图与可视化
【MATLAB 从零到进阶】day2 矩阵 数组
访问矩阵元素 >> A=[1,2,3;4,5,6;7,8,9]; >> x=A(2,3)% 双下标访问 x = 6 >> x=A(2)% 单下标访问 x = 4 单下标访问时相当于访问A所转成的向量的元素。 >> A(3:6) ans = 7 2 5 8 >>y4=A(:,1:2)%提取A的前两列元素 y4 = 1 2 4 5 7 8 >>y5 = A(1,:)%提取A的第一行元素 >> y5 = A(1,
统计学家
2019/04/10
4480

相似问题

Matlab代码到C#代码的转换

32

从MATLAB到R的代码转换

15

从MATLAB到C++的代码转换

31

Matlab到openCV代码转换

15

MATLAB到C代码转换

32
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档