MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

0

Create Matrix with zeros, ones and some numbers.

HARSH ZALAVADIYA さんによって質問されました 2019 年 3 月 22 日
最新アクティビティ John D'Errico
さんによって コメントされました 2019 年 3 月 26 日 8:01
I am struggling to create a following matrix in one go (using as few numbers used as possible). Can someone please help me out?
N =
0 0 0 0 0 1
0 0 0 0 0 1
1 2 3 4 5 1
0 2 4 6 8 1
8 7 2 5 9 1

  6 件のコメント

John D'Errico
2019 年 3 月 22 日
Personally, I like this, since it uses fewer numbers, sort of.
dec2base([1 1 123451 24681 872591],10) - '0'
But it depends on whether a multi-digit number is one number, or perhaps 6 numbers. It is fewer characters.
HARSH ZALAVADIYA 2019 年 3 月 25 日 13:52
N = [[zeros(2,5); (1:1:5); (0:2:8); 8 7 2 5 9;],[ones(5,1)]]
The shortest I can Make.
Jan
2019 年 3 月 25 日 14:28
@HARSH: A simplification:
N = [[zeros(2,5); 1:5; 0:2:8; 8 7 2 5 9], ones(5,1)]

サインイン to comment.

2 件の回答

回答者: Jan
2019 年 3 月 25 日 14:32
編集済み: Jan
2019 年 3 月 25 日 14:40
 採用された回答

With 2 "numbers" only:
c = ['0 0 0 0 0 1 ', ...
'0 0 0 0 0 1 ', ...
'1 2 3 4 5 1 ', ...
'0 2 4 6 8 1 ', ...
'8 7 2 5 9 1']
sscanf(c, '%g', [6,5]).'
But it depends on the rules if characters are considered as "numbers". But what does "in one go" mean? Is calling functions like dec2base accepted also? Without dec2base:
floor(rem([1; 1; 123451; 24681; 872591] ./ 10.^(5:-1:0), 10))
Or is this "better":
floor(rem([1; 1; 123451; 24681; 872591] ./ flip(10.^(0:5), 10))

  1 件のコメント

Jan
2019 年 3 月 25 日 14:55
John's idea uses less numbers.

サインイン to comment.


回答者: John D'Errico
2019 年 3 月 25 日 15:15
編集済み: John D'Errico
2019 年 3 月 25 日 15:57

Far fewer numbers required...
dec2base(hex2dec({'1','1','1E23B','6069','D508F'}),10) - '0'
ans =
0 0 0 0 0 1
0 0 0 0 0 1
1 2 3 4 5 1
0 2 4 6 8 1
8 7 2 5 9 1
Or, this, with even fewer numerics?
dec2base(base2dec({'1','1','2N97','J1L','IPAN'},36),10) - '0'
But more characters than my first solution.
dec2base([1 1 123451 24681 872591],10) - '0'

  2 件のコメント

Jan
2019 年 3 月 26 日 1:48
+1. {'1', '1', '2N97', 'J1L', 'IPAN'} - this reminds me to programming in ZX81 Basic. I had 1kB of RAM and VAL '1' took less memory that a numerical 1.
John D'Errico
2019 年 3 月 26 日 8:01
True. Though I'm not sure my nostalgia is well placed for those great, wonderful days of decks of punched cards and great spools of paper tape. There was a trick with decks of cards - draw a diagonal line across the top of the card deck, so that if one accidentally dropped the box of cards on the floor, they could be more easily re-odered.
Those were days when everything we did with computers was completely different. Output was onto great reams of computer printout. One day, I made a mistake plotting a simple figure with what was probably a Calcomp plotter. So the next day I received a long roll of Calcomp paper. Good quality paper too, 3 feet wide, and perhaps 100 feet long before they stopped it, with only a long diagonal line drawn down the length. I brought it home to use as a painting dropcloth, useful for many years afterwards.
I don't miss the days that much when my main computer interface was toggling the dip switches on the front panel of a computer. But there was a lot of fun to be had back then too.

サインイン to comment.



Translated by