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

1 ビュー (過去 30 日間)
Bogdan MP 2021 年 10 月 23 日

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 2021 年 10 月 23 日
K=sinc(alpha/pi*(x-y.'));
##### 5 件のコメント表示非表示 4 件の古いコメント
Bogdan MP 2021 年 10 月 23 日
Thank you very much!

サインインしてコメントする。

R2018a

### Community Treasure Hunt

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

Start Hunting!

Translated by