matlab的方差求算在matlab程序上输入下列例子:
Matlab 函数:var
>>X=[1,2,3,4]
>>var(X)=1.6667
>>sum((X(1,:)-mean(X)).^2)/length(X)=1.2500
>>sum((X(1,:)-mean(X)).^2)/(length(X)-1)=1.6667
var没有求矩阵的方差功能,可使用std先求均方差,再平方得到方差。
std,均方差,std(X,0,1)求列向量方差,std(X,0,2)求行向量方差。
>>X=[1 2
3 4]
>>std(X,0,1)=1.4142 1.4142
>>std(X,0,2)=0.7071
0.7071
若要求整个矩阵所有元素的均方差,则要使用std2函数:
>>std2(X)=1.2910
要注意的是var函数所采用公式中,分母不是 ,而是 。这是因为var函数实际上求的并不是方差,而是误差理论中“有限次测量数据的标准偏差的估计值”。
扩展资料:matlab求方差时的注意事项:
1、装出错时,可换注册码继续安装,凳喊到同一目录;枣旁野
2、谨记安装路径不要有中文名称;
3、成功安装完毕之后,如果遇到matlab启动后,窗口在打开一到两秒后就自动关闭了, 可按以下方法试试:【假设你安装的目录为c:\MATLAB\】(不过不建议安装到C盘,那样启碰会影响系统速度)
参考资料:百度百科 matlab
以下是一份MATLAB程序,使用筛法求含裤得小于10^8的雷打数:```matlab
n = 1e8% 设置筛法范围
isPrime = true(n, 1)% 初始化数组为全部为true
isPrime(1) = false% 定义1不是素数
% 首先从2开始,将所有的素数的倍数标记为非素数
for i = 2:sqrt(n)
if isPrime(i)
isPrime(i * i : i : n) = false
end
end
% 输出小于10^8的雷打数
for i = 1:length(isPrime)
if mod(i, 4) == 1 &&isPrime(i)
fprintf('%d\n', i)
end
end
```
在程序中,首先定义了一个筛法范围 `n = 1e8`,然后利用逻辑数组 `isPrime` 来记录每个数是否为素数。初始化时,所有的数默认为素数,将数漏者组全部初始化为 `true`;同谈搜简时,定义数字1不是素数。之后,从2开始循环,将所有的素数的倍数标记为非素数。具体实现的方法是,如果检测到一个素数i,则将i * i及其之后的所有i的倍数都标记为非素数。
最后,再次循环判断并输出所有小于10^8的雷打数。因为所有的雷打数的形式为4k+1,所以对于满足此条件的素数,都可以视为雷打数。程序使用 `mod(i, 4) == 1` 检查当前数是否满足4k+1的形式,并使用 `isPrime(i)` 检查该数是否为素数。如果两个条件都满足,则输出该数即可。
需要注意的是,在程序中使用了 `sqrt(n)` 函数,以降低时间复杂度。因为n以内的素数最大可能为 `sqrt(n)`,所以只需要进行到 `sqrt(n)` 的筛法,即可得到全部小于n的素数。
x=[1 3 5 -1]'n=length(x)
for i=1:n
if x(i)>2
y(i)=fun1(x(i))
else
y(i)=fun2(x(i))
end
end
y
这是主皮明程燃升告序笑拿。下面两个分别保存成M文件
function y = fun1(x)
y=x*x+1
end
function y = fun2(x)
y=x-1
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)