function - input and output matrix
36 views (last 30 days)
Show older comments
I need to write a function that takes a matrix of any size, double all the elements that are positive and adds 10 to all the elements that are zero or negative. I can't use loops, only filters.
the input matrix is xin[n,m] sent by the script and the out variable is xout [n,m]
This is my code:
function xout = matrixfx(xin)
%matrixfx takes a matrix of any size, doubles all the elements that are positive and adds 10 to all
%the elements that are zero or negative.
[n,m] = size(xin);
xout = zeros(n,m);
mask = xin > 0;
xout(mask) = xin(mask) * 2;
xout(~mask) = xin(~mask) + 10;
end
4 Comments
Steven Lord
on 21 Jun 2021
Okay, can you show us that script? I have a suspicion about what's causing the error but I'd need to see that script to confirm or refute that suspicion.
Answers (2)
Steven Lord
on 22 Jun 2021
My suspicion was correct. When you call load with an output argument, that output argument is a struct array with each variable in the MAT-file you load stored as a field of that struct. You just need to pull the data out of the struct.
mydata = load('census.mat')
If I wanted to work with the date and population data from census.mat, I would need to use mydata.cdate and mydata.pop rather than mydata (the whole struct array), cdate (which doesn't exist; the data is in the field of mydata), or pop (which also doesn't exist.)
[p, s, mu] = polyfit(mydata.cdate, mydata.pop, 2); % Work with cdate and pop from census.mat
0 Comments
Jan
on 21 Jun 2021
Edited: Jan
on 21 Jun 2021
Your code is fine. The only problem is, that you call it with a struct. Unfortunately you show us the code, but not, how you cll it, but the error is there.
x = [-10, 0, 10; -0.1, -1, 0];
matrixfx(x) % Working!
function xout = matrixfx(xin)
xout = zeros(size(xin));
mask = xin > 0;
xout(mask) = xin(mask) * 2;
xout(~mask) = xin(~mask) + 10;
end
0 Comments
See Also
Categories
Find more on Variables in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!