# How to write a function with logical condition which takes an array and turns back an array?

2 views (last 30 days)
Bogdan MP on 23 Oct 2021
Edited: Matt J on 23 Oct 2021
What I want to acheive is the following. Let's say I have the function if and .
I have two vectors with nodes: x and y and I would like to calculate the function mentioned abose as an array. I can do it straightforwardly as
A = zeros(length(x), length(y));
for i = 1 : length(x)
for j = 1 : length(y)
if (x(i) ~= y(j))
A(i,j) = sin(alpha*(x(i) - y(j))) / (alpha * (x(i) - y(j)));
else
A(i,j) = 1;
end
end
end
This way is not really fast. I would like to have a function that will produce similar output as this cycle. More precisely, I would like to have the output in the form which is applicable for the trapz() command to calculate the double integral after all
trapz(y, trapz(x, K, 2))
there K has been calculated previously
I was trying something loke this
function val = K(alp, x, y)
% [x, y] = meshgrid(x, y); %% I was trying different variants here
% [x, y] = ndgrid(x, y);
if (x ~= y)
val = sin(alp * (x - y)) ./ ( alp * (x - y) );
else
val = 1;
end
end
but, of course, it did not work. Could you tell me, please, how shall I rewrite this function to achieve what I mentioned?

Matt J on 23 Oct 2021
K=sinc(alpha/pi*(x-y.'));
Bogdan MP on 23 Oct 2021
Thank you very much!

### Categories

Find more on Descriptive Statistics in Help Center and File Exchange

R2018a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!