matlab 含有nan值的 求和 平均 nansum nanmean isnan

2024-06-17 19:08

本文主要是介绍matlab 含有nan值的 求和 平均 nansum nanmean isnan,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前几天编程,想算一个矩阵在含有nan值情况下的sum mean 等

这个功能一直没找到,于是自己编了小函数

最后呢,忽然发现在stats toolbox中居然有这种函数

nansum  nanmean 等等

说起来,就两招

1、isnan

2、逻辑数组的加减法--这一条真让人吐血,之前完全不知道逻辑型可以计数的

我编了一堆的话,而事实上人家用了这样几行就可以搞定

nans = isnan(x);

x(nans) = 0;

n = sum(~nans);  % 把这个0啊1啊的数列求和...就得到非零的个数,可这个nans分明是个逻辑数组

sum(x)./n;

stats toolbox里已经有了这些函数,

可以用 edit nanmean这个命令查看

下面这个是我编的

 

function M = mean_with_nan(A,dim)
% MEAN_WITH_NAN: Mean value, ignoring NaNs.
% USAGE:
% M = mean_with_nan(A)
% M = mean_with_nan(A,dim)
% input:
%       A - vector or multiple-dim arrays (with nan)
%       dim - take mean value along dim
% output:
%       M - mean value
% for nargin =1
% M is a number, even if input is arrays, this function treats it as a vector
%
% for nargin = 2
% input multiple-dim array, similar as the function MEAN
% M is the mean value along the dim
%
% Last edited 2011-2-1

    li = isnan(A);
    if nargin == 1
        M = mean(A(~li));
    elseif  nargin == 2
        A(li) = 0;
        n = sum(~li,dim);
        n(n==0) = NaN;
        M = sum(A,dim)./n;
    end
end

 

这篇关于matlab 含有nan值的 求和 平均 nansum nanmean isnan的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1070295

相关文章

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

libsvm在matlab中的使用方法

原文地址:libsvm在matlab中的使用方法 作者: lwenqu_8lbsk 前段时间,gyp326曾在论坛里问libsvm如何在matlab中使用,我还奇怪,认为libsvm是C的程序,应该不能。没想到今天又有人问道,难道matlab真的能运行libsvm。我到官方网站看了下,原来,真的提供了matlab的使用接口。 接口下载在: http://www.csie.ntu.edu.

1 模拟——67. 二进制求和

1 模拟 67. 二进制求和 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例 1:输入:a = "11", b = "1"输出:"100"示例 2:输入:a = "1010", b = "1011"输出:"10101" 算法设计 可以从低位到高位(从后向前)计算,用一个变量carry记录进位,如果有字符没处理完或者有进位,则循环处理。两个字符串对

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数_matlab pmsm-CSDN博客

MATLAB层次聚类分析法

转自:http://blog.163.com/lxg_1123@126/blog/static/74841406201022774051963/ 层次聚类是基于距离的聚类方法,MATLAB中通过pdist、linkage、dendrogram、cluster等函数来完成。层次聚类的过程可以分这么几步: (1) 确定对象(实际上就是数据集中的每个数据点)之间的相似性,实际上就是定义一个表征

Leetcode67---二进制求和

https://leetcode.cn/problems/add-binary/description/ 给出的两个二进制,我们可以从最后开始往前运算。 给当前短的一位前面补充0即可。 class Solution {public String addBinary(String a, String b) {//给的就是二进制字符串 最后一位开始遍历 如果没有就补充0?StringBuil

MATLAB的fix(),floor()和ceil()函数的区别与联系

fix(x),floor(x)和ceil(x)函数都是对x取整,只不过取整方向不同而已。 这里的方向是以x轴作为横坐标来看的,向右就是朝着正轴方向,向左就是朝着负轴方向。 fix(x):向0取整(也可以理解为向中间取整) floor(x):向左取整 ceil(x):向右取整 举例: 4个数:a=3.3、b=3.7、c=-3.3、d=-3.7 fix(a)=3 fl

MATLAB中的eig函数

在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有5种: E=eig(A):求矩阵A的全部特征值,构成向量E。 [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。 [V,D]=eig(A,'nobalance'):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特