A little help?

조회 수: 1 (최근 30일)
Aadam
Aadam 2011년 12월 11일
Hi there,
I am having a little problem with one of the questions for an assignment I have. I have less than basic knowlage of MALAB so this assignment is to break me in so to say.
The question states that I need to create a matrix with with the input values clamped in the range +- 1.
Any help would be much appreciated! :D
  댓글 수: 1
Aadam
Aadam 2011년 12월 11일
Hi guys thanks for helping.
I don't think I made myself very clear or explained my puzzle very clearly. For this I apologise
I will have a second attempt now.(Please bare in mind i am not a very experianced programer):
On my question sheetI am given a return property that is defined as oneabs. This property needs to return the input values clamped in the range of +-1.
Now I think this is asking me to return everything inbeetween and clip everything higher than +1 as 1, and everything <-1 as -1.
I hope this is a little clearer.

댓글을 달려면 로그인하십시오.

채택된 답변

Image Analyst
Image Analyst 2011년 12월 11일
Aadam: Based on your latest comment to your original question I would just make my code into a function. In file test.m:
function test()
% Generate sample data.
M = 10*rand(8) - 5; % Sample matrix.
% Clip the data to the range -1 to +1
oneabs = Clip(M)
% Clip to range (-1 to +1) if outside that range.
% Leave values alone if within that range.
function oneabs = Clip(M)
oneabs = M; % Initialize.
oneabs (M < -1) = -1;
oneabs (M > 1) = 1;

추가 답변 (5개)

Fangjun Jiang
Fangjun Jiang 2011년 12월 11일
Matrix=[-0.1,0.2;-0.5,0.9]
Based on your latest update in comments, here is a solution
InMatrix=4*rand(5)-2;
OutMatrix=min(InMatrix,1);
OutMatrix=max(OutMatrix,-1)
  댓글 수: 1
Jan
Jan 2011년 12월 11일
@Fangjun: "create a matrix with with the input values clamped in the range +- 1". Yes! I like the deeper message of this answer. +1
@Aadam: I do not think, that this answer solves your problem.

댓글을 달려면 로그인하십시오.


Mohsen  Davarynejad
Mohsen Davarynejad 2011년 12월 11일
Matrix = 2*rand(10,10) - 1
  댓글 수: 5
Mohsen  Davarynejad
Mohsen Davarynejad 2011년 12월 11일
Follow this:
B = A - min(A(:));
C=B./max(B(:));
D=2*C;
E=D-1;
Image Analyst
Image Analyst 2011년 12월 11일
You're scaling his data, which he didn't ask for.

댓글을 달려면 로그인하십시오.


Image Analyst
Image Analyst 2011년 12월 11일
M = 10*rand(8) - 5; % Sample matrix.
% Now clip to range (-1 to +1)
M(M<-1) = -1;
M(M>1) = 1;
  댓글 수: 4
Aadam
Aadam 2011년 12월 11일
have tried this but had an answer of oneabs: [1x1863 char]. a little confused. :s
Image Analyst
Image Analyst 2011년 12월 11일
No you didn't try it. You didn't try my code because I never mentioned oneabs. In fact I just copied and pasted my code into MATLAB, now that I'm on a computer that has it, and it ran fine and did exactly what I said and what you asked. You'd need to post your code for us to figure out what you did wrong.

댓글을 달려면 로그인하십시오.


Jan
Jan 2011년 12월 11일
Another approach:
M = 10*rand(8) - 5; % Sample matrix. (Thanks IA!)
M = max(min(M, 1), -1);

Mohsen  Davarynejad
Mohsen Davarynejad 2011년 12월 11일
The Matrix of interest of poster is:
A = [1,2,3;4,5,6;7,8,9];
and the soloution is the following:
B = A - min(A(:));
C=2*B./max(B(:))-1;
  댓글 수: 4
Mohsen  Davarynejad
Mohsen Davarynejad 2011년 12월 11일
@ Jan: Please take a look at Aadam's comment on my first post above, were he introduces his Matrix and asks for extra information on my code.
@ Image Analyst: Looking at the A matrix Aadam has in mind, the way you go is not correct!! The matrix elemets are between 1 and 9.
Image Analyst
Image Analyst 2011년 12월 11일
Mohsen, that matrix was in response to your question and as I mentioned it's not what any of us suggested because he somehow came up with some new matrix oneabs. So who knows why he cam up with that. Now if his matrix were really that (in the range 1-9) the simplest solution would simply be M = ones(1, length(M)); Of course he'd have no values less than 1 so there's be no reason to clip there like he originally required. But he said he DID need to clamp to -1 in his question and subject line. Neither Jan nor I sees anything at all where he says "scale my data" like you gave but we do see where he says "clamp my data." Though I do agree that your code does scale, which is fine if that's what he wants (despite saying something to the contrary). Aadam, please clarify: do you want scaling or clamping?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by