Checking if input is square using vectors

Hello, I'm an extreme newbie to MatLab. I'm trying to write a function that checks whether an input is square, and returns 1 for true, 0 for false. I figured that the best way to do this would be to run sqrt on each variable, then use mod to determine whether the remainder is 0. Here's the code I'm trying:
function y = issquare(n)
x = sqrt(n)
if mod (x,1)==0
y=true
else
y=false
end
The problem arises when a vector is input. Instead of returning the answers for individual vectors, it is returning a single answer. The x variable calculates correctly and returns the individual square roots of each value in the vector. The issue seems to arise when the program determines the y variable. I tried changing the mod input to
mod(x.,1)
but received an error.
Error: File: issquare.m Line: 3 Column: 11
Expression or statement is incorrect--possibly unbalanced (, {, or [.

 採用された回答

Jan
Jan 2015 年 9 月 20 日
編集済み: Jan 2015 年 9 月 20 日

0 投票

Appending a dot behind a variable is not valid Matlab syntax. Please look in the documentation for valid commands, because guessing will not be successful.
The problem is, that the if command requires a scalar expression. This can be solved by a vectorized expression:
function y = issquare(n)
y = (mod(sqrt(n), 1) == 0);
Now the output has the same size as the input.

2 件のコメント

thefaded
thefaded 2015 年 9 月 20 日
I was only trying this because it seems to be the operator for array multiplication, division and exponentiation. I'm really new to programming. I didn't even think about nesting the expression that way. Thank you!
Jan
Jan 2015 年 9 月 22 日
You are welcome to the world of vectorized programming in Matlab!
The dot in ".*", "./" and ".^" means, that the operation should not affect the complete matrix, but the elements. In consequence, there is e.g. no ".+", because the addition concerns the elements in every case.

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeFunction Creation についてさらに検索

質問済み:

2015 年 9 月 20 日

コメント済み:

Jan
2015 年 9 月 22 日

Community Treasure Hunt

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

Start Hunting!

Translated by