How to perform individual operation on a Column of data from excel file?

2 vues (au cours des 30 derniers jours)
I am intended to perform a separate operation (adding/subtracting some values) on Positive and Negative value from an Excel dataset using Matlab. To read the column I use the following code
num = xlsread('testdata.xls', 'B:B');
it reads fine and when I ask 'num' it shows the data. However, the data are having positive and negative values. I want to add some values to negative dataset and substruct from the positive dataset by keeping their position alike so that I can reconstruct a graph having exactly the same pattern. I have made two attempts:
1. Using logical indexing I can separate the positive and negative values and then perform the operation but can't combine them in the same order, something like following
idx = num<0;
neg = num(idx)+ 1.0e-08
pos = num(~idx)- 1.0e-08
2. If-else also not working at all:
if (num<0)
num = num +1
elseif(num>0)
num = num +2
end
Any help, please?

Réponse acceptée

KSSV
KSSV le 23 Oct 2017
Modifié(e) : KSSV le 23 Oct 2017
idx = num<0;
num(idx) = num(idx)+ 1.0e-08
num(~idx)= num(~idx)- 1.0e-08

Plus de réponses (1)

Walter Roberson
Walter Roberson le 23 Oct 2017
idxneg = num<0;
num(idxneg) = num(idxneg)+ 1.0e-08;
idxpos = num>0;
num(idxpos) = num(idxpos)- 1.0e-08;
I did not use ~idxneg because ~idxneg would include num == 0 exactly, but exact zeros are not positive values.
There is a shortcut for this code:
num = num - sign(num) * 1.0e-08;
This even leaves 0 unchanged.
  2 commentaires
Khondokar Fida Hasan
Khondokar Fida Hasan le 23 Oct 2017
This shortcut seems wonderful but in my case the operation (adding value) is different. Though in aforementioned case I use 1.0e-08 for every case, but I want to perform different adjustment for a different case.
Walter Roberson
Walter Roberson le 23 Oct 2017
offsets = [1.0e-08, 0, -8.7e-9];
num = num + offsets(2 + sign(num));
provided that the breakpoints are still negative, 0, positive

Connectez-vous pour commenter.

Catégories

En savoir plus sur Data Import from MATLAB dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by