User-defined function error
显示 更早的评论
I'm trying to write a function for this problem on my homework and keep getting an error and I'm not sure whats wrong with my code.
7. Write a user-defined function in Matlab of the form B=sqrtIfPos(A) that accepts a real-valued 2D matrix A of an arbitrary size (MxN), and outputs the same size (MxN) matrix B whose elements are square root for positive-valued elements of A, and 0 for negative-valued elements. For example, an input of [4 9 -3; 1 0 16] would produce an output of [2 3 0; 1 0 4] . Test the function with a 3x5 matrix of random integers in the interval [-10,10], which can be generated by randi([-10,10],3,5).
This is what I have so far:
function B=sqrtIsPos(A)
[m, n]=size(A);
B=zeros(m,n);
for i=1:m
for j=1:n
if (A(i,j)>=0)
B(i,j)=sqrt(A(i,j));
else
B(i,j)=0;
end
end
end
end
A=randi([-10,10],3,5)
B=sqrtIsPos(A)
print sqrtIfPos.m
3 个评论
Matt J
2018-10-30
Have you put the function sqrtIsPos somewhere Matlab can see it?
@Emily Williams: what do you expect this to do?:
print sqrtIfPos.m
Is all of that code saved in one Mfile, or is the function sqrtIsPos saved in its own Mfile?
Emily Williams
2018-10-30
回答(2 个)
Star Strider
2018-10-30
0 个投票
The only thing wrong is that you are likely not saving your function before you call it.
Save it somewhere on your MATLAB user path as sqrtIsPos.m. Then, you should be able to use it.
2 个评论
Emily Williams
2018-10-30
Star Strider
2018-10-30
Interesting. I copied your function as you posted it, saved it, and then ran it using your posted call to it:
A=randi([-10,10],3,5)
B=sqrtIsPos(A)
It is working correctly, and produced:
A =
9 -1 0 6 7
6 -1 0 3 1
0 -4 7 -3 -3
B =
3 0 0 2.4495 2.6458
2.4495 0 0 1.7321 1
0 0 2.6458 0 0
madhan ravi
2018-10-30
编辑:madhan ravi
2018-10-30
A=[4 9 -3; 1 0 16]
B=sqrtIsPos(A) % function calling should be before the function definition
function B=sqrtIsPos(A)
[m, n]=size(A);
B=zeros(m,n);
for i=1:m
for j=1:n
if (A(i,j)>=0)
B(i,j)=sqrt(A(i,j));
else
B(i,j)=0;
end
end
end
end
1 个评论
madhan ravi
2018-10-30
use
publish('sqrtIsPos.m') %to print contents of function as pdf
类别
在 帮助中心 和 File Exchange 中查找有关 Adding custom doc 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!