Info
此问题已关闭。 请重新打开它进行编辑或回答。
How to code this equation ?
1 次查看(过去 30 天)
显示 更早的评论
Hello,
I've a problem and I hope that someone have an idea to help me.
I have to code this equation in Matlab :
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/148312/image.png)
I try this way to code it :
for i = 1 : N
ci = @(sigma_1,sigma_2,x_1,y_1,x_2,y_2,R,c) 1/(sigma_1)*exp(-((x_1.^2+y_1.^2)/(sigma_1)))*K_12(x_1,y_1,x_2,y_2,R,c(i,:));
ci_2 = @(sigma_1,sigma_2,x_1,y_1,R,c) (1-integral2(@(x_2,y_2) ci(sigma_1,sigma_2,x_1,y_1,R,c(i)),0,10,0,10));
ci_2_vect(1,i) = @(sigma_1,sigma_2,x_1,y_1,R,c) arrayfun(@(x,y) ci_2(sigma_1,x,y,R,c(i,:)),x_1,y_1);
end
P = @(sigma_1,sigma_2,R,c) 1/(sigma_1)*integral2(@(x_1,y_1) exp(-((x_1.^2+y_1.^2)/(sigma_1)))*(1-prod(ci_2_vect(x_1,y_1,R,c))),0,10,0,10);
P(sigma_1,sigma_2,R,c(:,:,1))
Of course it doesn't work with this error :
"Error using arrayfun All of the input arguments must be of the same size and shape. Previous inputs had size 1 in dimension 1. Input #3 has size 100."
K is binary function so it's easy but I think I have a problem when I try to store my N functions to integrate in ci_2_vect. I have a product from 1 to N and so I have N different functions (as you can see, c is a matrix 2xN so for each subscript i my function is changing).
Think you very much if someone have an idea.
Brice
1 个评论
Walter Roberson
2015-8-22
The notation is not clear.
The only reference to "i" is in the form c(i). K12 takes "c" as its final parameter and references "c(i)" without indication of whether c is a function or an array being indexed or if it designates a point pair. Meanwhile, the one place that invokes K12 does so passing c(i) in to the final parameter. So whatever c(i) evaluates to is being passed as the final parameter to K12, which then applies the "(i)" to it again.
The |c(i) - (x1,y1) - (x2,y2)||| might be a magnitude calculation on c(i) - (x1,y1) - (x2,y2) . Working out what it is to mean is going to depend crucially on what c(i) designates. It kind of looks like the whole is intended to be testing whether two points are both within a particular radius of a center point, but the math does not look right for that.
回答(1 个)
Gareth Thomas
2015-8-22
if you use Mupad (from the Symbolic Toolbox) you can always generate MATLAB functions automatically see here:
I think that it will be easier for you to type the equation in Mupad.
At the command line just type: mupad
0 个评论
此问题已关闭。
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!