矩阵提取和分配数字或符号
我有大量的数据矩阵存储在 MATLAB M 文件中,我将
通过这个示例来解释我的问题:
我有三个常量矩阵(每个矩阵都有自己的值,这些
值不会改变,它们是实验结果的值
)矩阵总是有 4 行和 6 列
第一个矩阵的最后一列是零列
第二个矩阵没有任何零列
第三个矩阵的最后 2 列为零
实际上,我还有其他矩阵,但以上只是示例,这意味着
我的数据中的接下来的三个矩阵不必与上述三个矩阵具有相同的序列
在有或没有零列的情况下, 。另一点是
非零列总是在最后三列或两列或一列或者没有
零列。
因此,我从上面的矩阵中需要的是
仅将三个字母 x、y 和 z 或数字 5、6 和 7 分配给非零列,从
矩阵 1 的第一列开始,一直到最后一个矩阵的最后一列(不包括零列
意味着:上面的示例结果将是:
第一个矩阵:
第 1 列:5
第 2 列:6
第 3 列:7
第 4 列:5
第 5 列:6
第 6 列:排除且未编号,因为它是零列
然后它不会重置计数,但它连续标记并跳转到
下一个矩阵,因此:
第二个矩阵
Column 1: 7
Column 1: 5
。
。
。
。
依此类推,继续到最后一个矩阵。
我正在使用Matlab窗口中出现的以下命令:
K=input('输入矩阵编号:1 OR 2 OR 3')
然后,在输入矩阵编号后,程序要求用户
输入列编号:
M =input('输入列号 1 OR 2 OR 3 OR 4 OR 5 OR 6')
然后,结果将是一个两列的矩阵:
第一列:输入数字的列元素
第二列:分配的数字 5 OR 6 OR 7 到该列,并确保它
在整个列中重复。
抱歉问了这个很长的问题,我也尽力总结并使其变得简单。
我感谢任何帮助和感谢。
我可以继续问一个问题吗?
如果有人想用文本来表示数字,可能吗?
这意味着,例如:
5:绿色
6:蓝色
7:红色
然后,继续上面的分析。只是,用这些单词替换数字,
所以,第二列中的结果将是数字以外的单词。
很抱歉将我的问题放入答案框中,但我无法
对此问题发表评论。
I have huge data matrices stored in a MATLAB M-file and I will explain
my problem by this sample example:
I have three constant matrices (every matrix has its own values and these
values are not changed, they are values for experiment results)
Every matrix always has 4 rows and 6 columns
The last column of the 1st matrix is a zero column
The 2nd matrix does not have any zero column
The last 2 columns of the 3rd matrix are zeros
Actually, I have other matrices but the above are only samples, meaning
that the next three matrices in my data do not have to be in the same sequence of the
above three matrices in case of having or not having zero columns. Another point is
the non zero columns are always at the last three or two or one column or there is no
zero column.
So, what I need from the above matrices is assigning three letters x, y and z OR
numbers 5, 6 and 7 to the nonzero columns only, starting from the 1st column of
matrix 1 continuing to the last column of the last matrix excluding the zero columns
meaning that: the above example results will be:
1st matrix:
Column 1: 5
Column 2: 6
Column 3: 7
Column 4: 5
Column 5: 6
Column 6: excluded and not numbered since it is a zero column
Then it does not reset the counting, but it continuous labeling and jumps to the
next matrix, so:
2nd matrix
Column 1: 7
Column 1: 5
.
.
.
.
And so on continuing to the last matrix.
I am using the following command that appears in the Matlab window:
K=input('Enter the matrix number: 1 OR 2 OR 3')
Then, after entering the matrix number, the program asks the user to
enter the column number:
M=input('Enter the column number 1 OR 2 OR 3 OR 4 OR 5 OR 6')
Then, the result will be a matrix of two columns:
1st column: the column elements for the number entered
2nd column: the assigned number 5 OR 6 OR 7 to this column and for sure it is
repeated through the column.
Sorry for this long question and also I tried to summarize and make it simple as I can.
I appreciate any help and thanks.
Can I ask a question continuing to the above one ?
If someone wants to represents the numbers by text, is it possible?
this means, for example:
5 : green
6 : blue
7 : red
and then, continue as above analysis.Only, replacing the numbers by these words
so, the results in the 2nd column will be words other than numbers.
Sorry for putting my question in an answer box, but I couldn't comment
to this question..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我希望你将所有矩阵保存在一个变量中。它将允许您不必对不同的矩阵重复相同的命令或使用
eval
。假设您有 3 个矩阵:
您可以将它们组合为元胞数组:
或 3D 数组(因为所有矩阵具有相同的大小):
创建具有 4 行和 (6+6+6) 列的组合矩阵 B
然后您可以使用下面的代码用 5 6 和 7 重新填充 B:
将 B 拆分回原始矩阵:
最后你可以获得 2 列输出,
如果你不需要重新填充原始矩阵,你可以更早得到结果:
希望我没有做某个地方的错误。
它可能可以在不创建组合矩阵的情况下解决。但你的矩阵很小,不应该有任何内存或性能相关的问题。
I hope you keep all your matrices in one variable. It will allow you not to repeat the same commands for different matrices or to use
eval
.Let's say you have 3 matrices:
You can combine them as a cell array:
or 3D array (since all matrices have the same size):
Create combined matrix B with 4 rows and (6+6+6) columns
Then you can use the following code to repopulate B with 5 6 and 7:
Split B back to original matrices:
Finally you can get 2-column output as
If you don't need to repopulate original matrices you can get the result earlier:
Hope I didn't make a mistake somewhere.
It probably can be solved without creating combined matrix. But your matrices are small and there should not be any memory or performance related problems.