質問編集履歴

3

誤字

2016/08/26 16:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -8,11 +8,7 @@
8
8
 
9
9
  ###ソースコード
10
10
 
11
- ```
12
11
 
13
-
14
-
15
-
16
12
 
17
13
  %---先ほどアンテナ選択したベクトルに対応付け---
18
14
 

2

アドバイスとしてほしいところをはっきりさせた

2016/08/26 16:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  MATLABを使って受信ダイバーシチの選択合成、等利得合成、最大比合成の比較検討を行っています。
4
4
 
5
- 現在選択合成、等利得合成についてはプログラムが書けて結果もしっかりと出ていますが、最大比合成については結果が出ていません。
5
+ 最大比合成については結果が出ていません。
6
6
 
7
7
 
8
8
 
@@ -12,251 +12,11 @@
12
12
 
13
13
 
14
14
 
15
- %OFDM受信
15
+
16
16
 
17
- SPin_a = reshape(GI_RS_a,FFTsize,K+1,datanumber); % S/P変換
18
-
19
- SPin_b = reshape(GI_RS_b,FFTsize,K+1,datanumber); % S/P変換
20
-
21
-
22
-
23
- %--------------受信アンテナ選択--------------
17
+ %---先ほどアンテナ選択したベクトルに対応付け---
24
-
25
- if diversity == 0 || diversity == 2
26
-
27
- Z = abs(SPin_a);
28
-
29
- Z2 = abs(SPin_b);
30
-
31
- Z3 = zeros(FFTsize,ofdmsymbol+1,datanumber);
32
-
33
- SPin_c = zeros(FFTsize,ofdmsymbol+1,datanumber); %S/P変換の準備
34
-
35
- for data = 1 : datanumber
36
-
37
- for i=1 : K+1
38
-
39
-
40
-
41
- if(sum(Z2(1:FFTsize,i,data))/FFTsize < sum(Z(1:FFTsize,i,data))/FFTsize)
42
-
43
- Z_k(1,i,data) = 1;
44
-
45
- Z3(1:FFTsize,i,data) = Z(1:FFTsize,i,data);
46
-
47
- elseif(sum(Z2(1:FFTsize,i,data))/FFTsize > sum(Z(1:FFTsize,i,data))/FFTsize)
48
-
49
- Z_k(1,i,data) = 0;
50
-
51
- Z3(1:FFTsize,i,data) = Z2(1:FFTsize,i,data);
52
-
53
- else
54
-
55
- disp('終了します')
56
-
57
- return;
58
-
59
- end
60
-
61
-
62
-
63
- end
64
-
65
- end
66
-
67
- end
68
-
69
- fftin_a = fft(SPin_a); % FFT
70
-
71
- fftin_b = fft(SPin_b);
72
-
73
- fftin = [fftin_a;fftin_b]; % FFT
74
-
75
- if diversity == 0 %選択合成
76
-
77
- Z_k(:,1,:) = [];
78
-
79
- dive = 1;
80
-
81
- ooo = 0;
82
-
83
- uuu = 0;
84
-
85
- end
86
-
87
- if diversity == 1 %等利得合成
88
-
89
- dive = 0;
90
-
91
- ooo = 0;
92
-
93
- uuu = 0;
94
-
95
- end
96
-
97
- if diversity == 2 %最大比合成
98
-
99
- dive = 0;
100
-
101
- ooo = 0;
102
-
103
- uuu = 0;
104
-
105
- end
106
-
107
- if diversity == 3 %全部のダイバーシチ実行
108
-
109
- Z_k(:,1,:) = [];
110
-
111
- dive = 1;
112
-
113
- ooo = 1;
114
-
115
- uuu = 2;
116
-
117
- end
118
-
119
- %電力の信号に当たるO信号除去
120
-
121
- if p==30 && BERQ == 1 %データの中から一つ選ぶ%
122
18
 
123
19
 
124
-
125
- if diversity == 0 || diversity == 3
126
-
127
- Psig_Z_1=zeros(Dsub,K,datanumber);
128
-
129
- Psig_Z_1(1:10,:,:)=Z(7:16,2:K+1,:);
130
-
131
- Psig_Z_1(11:19,:,:)=Z(18:26,2:K+1,:);
132
-
133
- Psig_Z_1(20:29,:,:)=Z(28:37,2:K+1,:);
134
-
135
- Psig_Z_1(30:38,:,:)=Z(39:47,2:K+1,:);
136
-
137
- Psig_Z_1(39:48,:,:)=Z(49:58,2:K+1,:);
138
-
139
- Psig_Z_2=zeros(Dsub,K,datanumber);
140
-
141
- Psig_Z_2(1:10,:,:)=Z2(7:16,2:K+1,:);
142
-
143
- Psig_Z_2(11:19,:,:)=Z2(18:26,2:K+1,:);
144
-
145
- Psig_Z_2(20:29,:,:)=Z2(28:37,2:K+1,:);
146
-
147
- Psig_Z_2(30:38,:,:)=Z2(39:47,2:K+1,:);
148
-
149
- Psig_Z_2(39:48,:,:)=Z2(49:58,2:K+1,:);
150
-
151
- Psig_Z_3=zeros(Dsub,K,datanumber);
152
-
153
- Psig_Z_3(1:10,:,:)=Z3(7:16,2:K+1,:);
154
-
155
- Psig_Z_3(11:19,:,:)=Z3(18:26,2:K+1,:);
156
-
157
- Psig_Z_3(20:29,:,:)=Z3(28:37,2:K+1,:);
158
-
159
- Psig_Z_3(30:38,:,:)=Z3(39:47,2:K+1,:);
160
-
161
- Psig_Z_3(39:48,:,:)=Z3(49:58,2:K+1,:);
162
-
163
- Psig_ZZ_1 = reshape(Psig_Z_1,Dsub,K*datanumber);
164
-
165
- Psig_ZZ_2 = reshape(Psig_Z_2,Dsub,K*datanumber);
166
-
167
- Psig_ZZ_3 = reshape(Psig_Z_3,Dsub,K*datanumber);
168
-
169
- ZZ(1,1:ofdmsymbol*datanumber) = sum(Psig_ZZ_1)/Dsub;
170
-
171
- ZZ2(1,1:ofdmsymbol*datanumber) =sum(Psig_ZZ_2)/Dsub;
172
-
173
- ZZ3(1,1:ofdmsymbol*datanumber) =sum(Psig_ZZ_3)/Dsub;
174
-
175
- %電力計算
176
-
177
- end
178
-
179
- end
180
-
181
- for re=1 : Nr-1+dive
182
-
183
- %信号部分格納&0信号除去
184
-
185
- Psig=zeros(Dsub,K+1,datanumber);
186
-
187
- Psig(1:10,:,:)=fftin(7+(re-1)*FFTsize:16+(re-1)*FFTsize,:,:);
188
-
189
- Psig(11:19,:,:)=fftin(18+(re-1)*FFTsize:26+(re-1)*FFTsize,:,:);
190
-
191
- Psig(20:29,:,:)=fftin(28+(re-1)*FFTsize:37+(re-1)*FFTsize,:,:);
192
-
193
- Psig(30:38,:,:)=fftin(39+(re-1)*FFTsize:47+(re-1)*FFTsize,:,:);
194
-
195
- Psig(39:48,:,:)=fftin(49+(re-1)*FFTsize:58+(re-1)*FFTsize,:,:);
196
-
197
-
198
-
199
- %プリアンブル
200
-
201
- Preamble_re_re = Psig(:,index_Preamble,:);
202
-
203
- Psig(:,1,:) = [];
204
-
205
- if preamble_test == 0
206
-
207
- for data = 1 : datanumber
208
-
209
- %reshapeをしてブロック対角化をしたときにPreambleの形でブロック対角化するため
210
-
211
- Preamble_known = ones(Dsub,1);
212
-
213
- Preamble_known = Preamble_known.'; %既知のプリアンブル
214
-
215
- Preamble_re = Preamble_re_re(:,:,data).';%受信されたプリアンブル
216
-
217
- %ブロック対角化をするための準備
218
-
219
- Preamble_known = reshape(Preamble_known,Dsub,1);%既知のプリアンブル
220
-
221
- Preamble_re = reshape(Preamble_re,Dsub,1);%受信されたプリアンブル
222
-
223
- %プリアンブルをNr*Nc行Nt*Nc列にブロック対角化
224
-
225
- Preambletmp(index_blk) = Preamble_known;%既知のプリアンブル
226
-
227
- Preambletmp2(index_blk) = Preamble_re;%受信されたプリアンブル
228
-
229
-
230
-
231
- %---伝搬行列の推定の推定---
232
-
233
- Htmp=Preambletmp2.'/Preambletmp.';
234
-
235
- % Ginv = inv(permute(Htmp,[2 1 3]).*Htmp);
236
-
237
-
238
-
239
- G = (Htmp'*Htmp)\Htmp';
240
-
241
- AAA(:,:,data) = G*Psig(:,:,data);
242
-
243
- end
244
-
245
- PSin(re,:,:) = reshape(AAA,1,L,datanumber); % P/S変換
246
-
247
- else
248
-
249
- PSin(re,:,:) = reshape(Psig,1,L,datanumber);
250
-
251
- end
252
-
253
-
254
-
255
- end
256
-
257
-
258
-
259
- %---------------先ほどアンテナ選択したベクトルに対応付け--------------
260
20
 
261
21
  if diversity == 0 || diversity == 3
262
22
 
@@ -304,30 +64,6 @@
304
64
 
305
65
  end
306
66
 
307
- for re=1 :Nr+1+uuu
308
-
309
- for data = 1 : datanumber
310
-
311
- PSin_r = PSin(re,:,data);
312
-
313
- %PSK復調
314
-
315
- if M == 16
316
-
317
- demod=modem.qamdemod('M',M,'SymbolOrder','gray','OutputType','bit','DecisionType','hard decision');
318
-
319
- else
320
-
321
- demod=modem.pskdemod('M',M,'SymbolOrder','gray','OutputType','bit','DecisionType','hard decision');
322
-
323
- end
324
-
325
- demodsig=demodulate(demod,PSin_r);
326
-
327
- h(1,1+ofdmsymbol*Dsub*log2(M)*(data-1):ofdmsymbol*Dsub*log2(M)*data)=reshape(demodsig,1,ofdmsymbol*Dsub*log2(M));
328
-
329
- end
330
-
331
67
 
332
68
 
333
69
  ###試したこと
@@ -340,4 +76,6 @@
340
76
 
341
77
  ・MATLABです
342
78
 
343
- 半年程悩んでいます。誰かお助けください。
79
+ 最大比合成の重みの決め方、考え方につてアドバイスお願いいたします。
80
+
81
+ ・PSin(1,:,:)はアンテナA、PSin(2,:,:)はアンテナB

1

コメントの追加等

2016/08/26 16:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
  fftin = [fftin_a;fftin_b]; % FFT
74
74
 
75
- if diversity == 0
75
+ if diversity == 0 %選択合成
76
76
 
77
77
  Z_k(:,1,:) = [];
78
78
 
@@ -84,7 +84,7 @@
84
84
 
85
85
  end
86
86
 
87
- if diversity == 1
87
+ if diversity == 1 %等利得合成
88
88
 
89
89
  dive = 0;
90
90
 
@@ -94,7 +94,7 @@
94
94
 
95
95
  end
96
96
 
97
- if diversity == 3
97
+ if diversity == 2 %最大比合成
98
98
 
99
99
  dive = 0;
100
100
 
@@ -104,7 +104,7 @@
104
104
 
105
105
  end
106
106
 
107
- if diversity == 2
107
+ if diversity == 3 %全部のダイバーシチ実行
108
108
 
109
109
  Z_k(:,1,:) = [];
110
110
 
@@ -122,7 +122,7 @@
122
122
 
123
123
 
124
124
 
125
- if diversity == 0 || diversity == 2
125
+ if diversity == 0 || diversity == 3
126
126
 
127
127
  Psig_Z_1=zeros(Dsub,K,datanumber);
128
128
 
@@ -258,7 +258,7 @@
258
258
 
259
259
  %---------------先ほどアンテナ選択したベクトルに対応付け--------------
260
260
 
261
- if diversity == 0 || diversity == 2
261
+ if diversity == 0 || diversity == 3
262
262
 
263
263
  for data = 1 : datanumber
264
264
 
@@ -284,7 +284,7 @@
284
284
 
285
285
  %---------------等利得合成--------------
286
286
 
287
- if diversity == 1 || diversity == 2
287
+ if diversity == 1 || diversity == 3
288
288
 
289
289
  PSin(3+ooo,:,:) = PSin(1,:,:)+PSin(2,:,:);
290
290
 
@@ -298,7 +298,7 @@
298
298
 
299
299
  %---------------最大比合成-------------
300
300
 
301
- if diversity == 3 || diversity == 2
301
+ if diversity == 2 || diversity == 3
302
302
 
303
303
 
304
304