Hello everyone!
I need help with this, I have my matrix (Number1 of size 103x18) and another text matrix (Text1 of size 152x18). Now these are files that I'm reading in matlab from excel and taking specific information that is in specifc locations.
Now, my problem is that when I'm trying to move forward I face matrices of size (104x18) for the Number values and (153x18) or even (144x18) for my text. There is either an extra empty row that I'd want to remove or add because I want my Number matrices to be of the size 103x18 and the text ones 152x18. So that the data would be in the same location for them all.
I have no idea how to fix this, I tried ismember, I tried to somehow find the index of the extra or missing row but I cant seem to move forward. I don't know how to approach it.
Your help would be truly appreciated.
Thank you in advance!!

6 Kommentare

Star Strider
Star Strider am 19 Jan. 2020
Looking at a section of ‘Number1’ and ‘Text1’, it appears that there are a considerable number of NaN or empty elements (respectively) in those files. It miight be best to extract the elements that are not NaN or empty to different matrices first, then see how the dimensions match. It will be necessary to take care with that so that the essential structure of the matrices (relationships of the other elements) remains intact.
John Doe
John Doe am 19 Jan. 2020
I never really considered that! Okay, I'll take that approach and see how it goes! Thank you!
John Doe
John Doe am 19 Jan. 2020
Removing the Nans changes the complete size of the Matrix, is there a way around this? or a different approach?
For some reason I get a biggere difference in them when I remove the NaNs and they turn into a single column
dpb
dpb am 19 Jan. 2020
Dunno that we can do anything specific without seeing the input files and understanding what it is you're trying to retrieve.
If you used (the deprecated) xlsread to return the numeric and text values, there's almost always a mismatch in sizes as the numeric return and text return values return arrays beginning with where they find data...leading blank rows may be ignored and the numeric array won't have values at the end where there may be text, etc., etc., etc., ...
The raw third optional return variable will return the whole sheet region requested in its entirety, but then you have to parse the numeric and text data. This often is easier than trying to patch the other two together again, however, as you're discovering.
readtable can do a better job if the data are tabular; use the detectimportoptions routine first for best shot.
But, specifics rely entirely upon what the worksheet structure actually is and we simply don't have the information needed...
Image Analyst
Image Analyst am 20 Jan. 2020
John, regarding your recent edit, did you see my Answer below? I think it explains what you're seeing. If not, explain why not.
John Doe
John Doe am 22 Jan. 2020
[numbers, strings, raw], I used this to read my excel files but there was still a shift. The shift came from the excel sheets themselves. Not all the data where filled in, in the same location (there was one cell shift or so). So I re-adjusted my raw data then I re-wrote the excelsheets, so that when I try to read the data its all in the same position.
Your answer helped me see the raw data and how it affected my number and text data. Thank you so much! :)

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Image Analyst
Image Analyst am 19 Jan. 2020

0 Stimmen

The numbers and the strings will have different upper left locations in your variables. For example, if you have string row headers all along row 1, and file names going down column 1, and starting from B2 across and down you have all numbers, then you do
[numbers, strings, raw] = xlsread(filename);
strings will be taken starting from A1 across and down, while numbers will be taken from B2 across and down. So strings{1,1} will be cell A1 from the workbook, while numbers(1,1) will be from cell B2 of the workbook. Thus they don't align as you've seen.
The way to "fix" that and make sure if you put in a cell location it will be taken from the same location as in the workbook is to use the raw variable - the third output argument of xlsread.

Weitere Antworten (0)

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by