有一组m行n列的数组,在matlab中如何编程,每三个数求一次平均数(行与列分别求)?

如题所述

给你一个非常完整的程序,基本上考虑了各种可能
程序:
clear
clc
m = input('输入m:');
n = input('输入n: ');
A = rand(m,n); %%%%%% 你未给出矩阵,我就自己产生个随机的,自己替换
AA = A(:);
%%%%%%%%% 按行取3个平均 %%%%%%%
disp('按行取还是按列取?')
disp('按行选择1,按列选择2.')
choose = input('选择:');
switch choose
case 1
temp = A(:);
AA = temp';
case 2
AA = A(:);
otherwise
disp('error input!')
end
if mod(length(AA),3)==0
myend = length(AA);
else
myend = length(AA)-3;
end
jj = 1;
for ii = 1:3:myend
cxd1 = AA(ii:ii+2);
BB(jj) = mean(cxd1);
jj = jj+1;
end
yushu = mod(m*n,3);
switch yushu
case 0
disp('取平均后的结果:')
BB
case 1
disp('取平均后的结果:')
BB
disp('多余一个数值:')
disp(AA(end))
case 2
disp('取平均后的结果:')
BB
disp('多余两个数值:')
disp(AA(end-1:end))
end

结果事例:
输入m:4
输入n: 4
按行取还是按列取?
按行选择1,按列选择2.
选择:1
取平均后的结果:
BB =
0.5091 0.7736 0.5238 0.4586 0.7605
多余一个数值:
0.9823

copyright(c) cxd1301
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-24
你的三个数 是不是一行中的 1 2 3求平均值 然后4 5 6 求平均值??如果是的话

[m,n]=size(A);%%%%有一组m行n列的数组
b=A(1:end-2,:);
c=A(2:end-1,:);
d=A(3:end,:);
hang=(b+c+d)/3;%%行平均值

列同理
相似回答