matlab函数调用问题,一个矩阵的自变量,怎么都是同一个答案

function [ E ] = pickfirst(m,n )
k=2:n-1;
E=(m-1)/(n*m-(n-1))*sum(24*k+3)+m/(n*m-(n-1))*(24*n+3);

end%这是原函数
m=1:50;n=1:50;
[M,N]=meshgrid(m,n)
E=pickfist(M,N)
Columns 1 through 10

0.5400 0.5400 0.5400 0.5400 0.5400 0.5400 0.5400 0.5400 0.5400 0.5400
0.5400 0.5400 0.5400 0.5400 0.5400 0.5400 0.5400 0.5400 0.5400 0.5400
0.5400 0.5400 0.5400 0.5400 0.5400 0.5400 0.5400 0.5400 0.5400

好像有点问题呀,你传递进去的参数N是一个50x50的matrix,但是呢,pickfirst function 里面, k=2:N-1, 那是什么。。。。追问

k=2:N-1本意是想构造一个向量,函数是放在m文件里的,不知道是否有问题。

刚才缩小了范围之后,提示了新的错误

Error in pickfirst (line 4)

E=(m-1)/(n*m-(n-1))*sum(24*k+3)+m/(n*m-(n-1))*(24*n+3);

整个函数是

希望能帮忙看一下这个函数应该怎么改,多谢

追答

如果k = 2:n-1是想构造一个向量,那首先是参数传递错了,也就是说你的N不应该是一个矩阵,而应该是一个数。比如说当n=5,那k=2:(5-1)就是向量k = [2 3 4]。我不知道你的函数是想要什么样的功能呀?

追问

是为了用mesh作出函数值关于m,n的三维图像,应该是用矩阵的没错吧

追答

“是为了用mesh作出函数值关于m,n的三维图像,应该是用矩阵的没错吧”-------没错。

但是你要是还想把是一个矩阵的n当作pickfirst的参数,就错了。

你把你想要的功能说说看,我再写一个

追问

  哦 好
  已知函数t=(m-1)/(n*m-(n-1))*(从2到n-1累加(27+24(n-1)))+m/(m*n-(n-1))*(27+24(n-1))
要做出m,n关于t的三维图像,m,n都是正整数

追答

clc, clear, close all

m = 1:50;
n = 1:50;

[M,N] = meshgrid(m,n);
t = (M-1) ./ (N .*M - (N-1)) ...,
.* (sum(n(1:1,2:(length(n)-1))) * (27+24 *(N-1))) ...,
+ M ./ (M .* N - (N-1));

figure, mesh(M,N,t);

你检查一下我的t那里第二行写的对不对呀,我有点儿没看懂(从2到n-1累加(27+24(n-1)))这个括号,意思是sum乘以(27+24(n-1))吗?反正你就随便一试

温馨提示:答案为网友推荐,仅供参考
相似回答