function - input and output matrix
23 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Steven Lord
2021 年 6 月 21 日
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.
回答 (2 件)
Steven Lord
2021 年 6 月 22 日
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 件のコメント
Jan
2021 年 6 月 21 日
編集済み: Jan
2021 年 6 月 21 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で Structures についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!